From 7bf23185f328a7466a90dc3ab44cad7463f8f3fc Mon Sep 17 00:00:00 2001 From: cheeks <134818917+leftovertoast@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:05:07 -0500 Subject: [PATCH] added parent folder for organization between the book and personal projects --- Murach/.DS_Store | Bin 0 -> 6148 bytes Murach/book_apps/ch01/die_roller/index.html | 22 + Murach/book_apps/ch01/die_roller/main.css | 12 + Murach/book_apps/ch01/email_list/add.html | 12 + .../book_apps/ch01/email_list/email_list.js | 40 + Murach/book_apps/ch01/email_list/index.html | 32 + Murach/book_apps/ch01/email_list/main.css | 26 + Murach/book_apps/ch01/welcome/index.html | 13 + Murach/book_apps/ch01/welcome/main.css | 11 + Murach/book_apps/ch02/miles_to_kms/index.html | 9 + .../ch02/miles_to_kms/miles_to_kms.js | 13 + Murach/book_apps/ch02/test_scores/index.html | 9 + .../book_apps/ch02/test_scores/test_scores.js | 25 + .../ch03/future_value/future_value.js | 32 + Murach/book_apps/ch03/future_value/index.html | 11 + .../ch03/guess_number/guess_number.js | 35 + Murach/book_apps/ch03/guess_number/index.html | 13 + .../ch03/magic_eight_ball/index.html | 13 + .../ch03/magic_eight_ball/magic_eight_ball.js | 48 + Murach/book_apps/ch04/bio/bio.js | 29 + Murach/book_apps/ch04/bio/index.html | 10 + .../book_apps/ch04/email_check/email_check.js | 18 + Murach/book_apps/ch04/email_check/index.html | 10 + Murach/book_apps/ch04/test_scores/index.html | 13 + .../book_apps/ch04/test_scores/test_scores.js | 34 + Murach/book_apps/ch04/test_scores2/index.html | 13 + .../ch04/test_scores2/test_scores.js | 39 + Murach/book_apps/ch05/bio/bio.js | 46 + Murach/book_apps/ch05/bio/index.html | 9 + .../ch05/future_value/future_value.js | 30 + Murach/book_apps/ch05/future_value/index.html | 12 + Murach/book_apps/ch05/guess_number/guess.js | 51 + Murach/book_apps/ch05/guess_number/index.html | 20 + Murach/book_apps/ch05/guess_number/main.css | 15 + Murach/book_apps/ch05/typewriter/index.html | 14 + .../book_apps/ch05/typewriter/typewriter.css | 9 + .../book_apps/ch05/typewriter/typewriter.js | 23 + Murach/book_apps/ch06/faqs/faqs.css | 41 + Murach/book_apps/ch06/faqs/faqs.js | 24 + Murach/book_apps/ch06/faqs/images/minus.png | Bin 0 -> 48780 bytes Murach/book_apps/ch06/faqs/images/plus.png | Bin 0 -> 49264 bytes Murach/book_apps/ch06/faqs/index.html | 35 + .../book_apps/ch06/image_swap/image_swap.css | 16 + .../book_apps/ch06/image_swap/image_swap.js | 32 + .../ch06/image_swap/images/bison.jpg | Bin 0 -> 88319 bytes .../book_apps/ch06/image_swap/images/deer.jpg | Bin 0 -> 105300 bytes .../book_apps/ch06/image_swap/images/hero.jpg | Bin 0 -> 83787 bytes .../ch06/image_swap/images/release.jpg | Bin 0 -> 74621 bytes Murach/book_apps/ch06/image_swap/index.html | 30 + .../ch06/image_swap/thumbnails/bison.jpg | Bin 0 -> 3430 bytes .../ch06/image_swap/thumbnails/deer.jpg | Bin 0 -> 4487 bytes .../ch06/image_swap/thumbnails/hero.jpg | Bin 0 -> 3623 bytes .../ch06/image_swap/thumbnails/release.jpg | Bin 0 -> 3403 bytes Murach/book_apps/ch06/register/confirm.html | 17 + Murach/book_apps/ch06/register/index.html | 59 + Murach/book_apps/ch06/register/register.css | 33 + Murach/book_apps/ch06/register/register.js | 61 + .../book_apps/ch06/register_2.0/confirm.html | 17 + Murach/book_apps/ch06/register_2.0/index.html | 59 + .../book_apps/ch06/register_2.0/register.css | 39 + .../book_apps/ch06/register_2.0/register.js | 79 + .../ch07/future_value/future_value.css | 24 + .../ch07/future_value/future_value.js | 68 + Murach/book_apps/ch07/future_value/index.html | 33 + .../future_value.css | 25 + .../future_value.js | 58 + .../index.html | 33 + Murach/book_apps/ch08/clock/clock.js | 22 + Murach/book_apps/ch08/clock/index.html | 15 + Murach/book_apps/ch08/clock/main.css | 17 + Murach/book_apps/ch08/countdown/countdown.css | 36 + Murach/book_apps/ch08/countdown/countdown.js | 47 + Murach/book_apps/ch08/countdown/index.html | 28 + .../ch08/slide_show/images/bison.jpg | Bin 0 -> 88319 bytes .../book_apps/ch08/slide_show/images/deer.jpg | Bin 0 -> 105300 bytes .../book_apps/ch08/slide_show/images/hero.jpg | Bin 0 -> 83787 bytes .../ch08/slide_show/images/release.jpg | Bin 0 -> 74621 bytes Murach/book_apps/ch08/slide_show/index.html | 21 + .../book_apps/ch08/slide_show/slide_show.css | 16 + .../book_apps/ch08/slide_show/slide_show.js | 46 + Murach/book_apps/ch08/timer/index.html | 15 + Murach/book_apps/ch08/timer/main.css | 22 + Murach/book_apps/ch08/timer/timer.js | 41 + Murach/book_apps/ch08/trivia/index.html | 53 + Murach/book_apps/ch08/trivia/main.css | 12 + .../ch09/future_value/calc_future_value.js | 38 + .../ch09/future_value/future_value.css | 31 + .../ch09/future_value/future_value.js | 48 + Murach/book_apps/ch09/future_value/index.html | 35 + Murach/book_apps/ch09/register/confirm.html | 17 + Murach/book_apps/ch09/register/index.html | 59 + Murach/book_apps/ch09/register/register.css | 29 + .../book_apps/ch09/register_2.0/confirm.html | 17 + Murach/book_apps/ch09/register_2.0/index.html | 62 + .../book_apps/ch09/register_2.0/register.css | 29 + .../book_apps/ch09/register_2.0/register.js | 52 + .../ch10/future_value/future_value.css | 25 + .../ch10/future_value/future_value.js | 74 + Murach/book_apps/ch10/future_value/index.html | 33 + .../book_apps/ch10/hit_counter/hit_counter.js | 24 + Murach/book_apps/ch10/hit_counter/index.html | 15 + Murach/book_apps/ch10/hit_counter/main.css | 15 + Murach/book_apps/ch10/hit_counter/test.html | 27 + Murach/book_apps/ch10/task_list/index.html | 25 + Murach/book_apps/ch10/task_list/task_list.css | 24 + Murach/book_apps/ch10/task_list/task_list.js | 46 + Murach/book_apps/ch11/task_list/index.html | 32 + Murach/book_apps/ch11/task_list/task_list.css | 31 + Murach/book_apps/ch11/task_list/task_list.js | 55 + Murach/book_apps/ch11/test_scores/index.html | 34 + .../ch11/test_scores/test_scores.css | 31 + .../book_apps/ch11/test_scores/test_scores.js | 54 + Murach/book_apps/ch12/invoice/index.html | 30 + Murach/book_apps/ch12/invoice/invoice.js | 15 + Murach/book_apps/ch12/invoice/lib_invoice.js | 14 + Murach/book_apps/ch12/invoice/main.css | 25 + Murach/book_apps/ch12/task_list/index.html | 37 + .../book_apps/ch12/task_list/lib_storage.js | 21 + Murach/book_apps/ch12/task_list/lib_task.js | 20 + .../book_apps/ch12/task_list/lib_task_list.js | 39 + Murach/book_apps/ch12/task_list/main.css | 45 + Murach/book_apps/ch12/task_list/task_list.js | 72 + Murach/book_apps/ch12/trips/index.html | 36 + Murach/book_apps/ch12/trips/lib_trips.js | 52 + Murach/book_apps/ch12/trips/trips.css | 29 + Murach/book_apps/ch12/trips/trips.js | 40 + Murach/book_apps/ch13/clock/clock.js | 14 + Murach/book_apps/ch13/clock/index.html | 23 + Murach/book_apps/ch13/clock/main.css | 16 + Murach/book_apps/ch13/general_modules/DOM.js | 40 + .../book_apps/ch13/general_modules/storage.js | 18 + .../ch13/slide_show/images/bison.jpg | Bin 0 -> 88319 bytes .../book_apps/ch13/slide_show/images/deer.jpg | Bin 0 -> 105300 bytes .../book_apps/ch13/slide_show/images/hero.jpg | Bin 0 -> 83787 bytes .../ch13/slide_show/images/release.jpg | Bin 0 -> 74621 bytes Murach/book_apps/ch13/slide_show/index.html | 19 + Murach/book_apps/ch13/slide_show/lib_DOM.js | 3 + .../ch13/slide_show/lib_slide_show.js | 59 + Murach/book_apps/ch13/slide_show/main.css | 13 + .../book_apps/ch13/slide_show/slide_show.js | 21 + Murach/book_apps/ch13/task_list/index.html | 45 + .../book_apps/ch13/task_list/modules/task.js | 20 + .../ch13/task_list/modules/task_list.js | 39 + .../ch13/task_list/modules/task_storage.js | 23 + Murach/book_apps/ch13/task_list/task_list.css | 45 + Murach/book_apps/ch13/task_list/task_list.js | 68 + Murach/book_apps/ch14/astronomy_pod/apod.css | 28 + Murach/book_apps/ch14/astronomy_pod/apod.js | 87 + .../astronomy_pod/images/notavailable.png | Bin 0 -> 4387 bytes .../book_apps/ch14/astronomy_pod/index.html | 25 + .../book_apps/ch14/user_directory/index.html | 24 + Murach/book_apps/ch14/user_directory/main.css | 15 + .../ch14/user_directory/mod_users.js | 6 + .../ch14/user_directory/user_directory.js | 20 + Murach/book_apps/ch15/cors_proxy/index.html | 26 + Murach/book_apps/ch15/cors_proxy/main.css | 12 + .../ch15/cors_proxy/node_modules/.bin/mime | 12 + .../cors_proxy/node_modules/.bin/mime.cmd | 17 + .../cors_proxy/node_modules/.bin/mime.ps1 | 28 + .../node_modules/.package-lock.json | 787 ++ .../node_modules/@types/http-proxy/LICENSE | 21 + .../node_modules/@types/http-proxy/README.md | 16 + .../node_modules/@types/http-proxy/index.d.ts | 237 + .../@types/http-proxy/package.json | 47 + .../node_modules/@types/node/LICENSE | 21 + .../node_modules/@types/node/README.md | 16 + .../node_modules/@types/node/assert.d.ts | 972 ++ .../@types/node/assert/strict.d.ts | 8 + .../node_modules/@types/node/async_hooks.d.ts | 532 + .../node_modules/@types/node/buffer.d.ts | 2354 +++++ .../@types/node/child_process.d.ts | 1400 +++ .../node_modules/@types/node/cluster.d.ts | 414 + .../node_modules/@types/node/console.d.ts | 412 + .../node_modules/@types/node/constants.d.ts | 18 + .../node_modules/@types/node/crypto.d.ts | 3978 ++++++++ .../node_modules/@types/node/dgram.d.ts | 550 ++ .../@types/node/diagnostics_channel.d.ts | 191 + .../node_modules/@types/node/dns.d.ts | 668 ++ .../@types/node/dns/promises.d.ts | 414 + .../node_modules/@types/node/dom-events.d.ts | 126 + .../node_modules/@types/node/domain.d.ts | 170 + .../node_modules/@types/node/events.d.ts | 788 ++ .../node_modules/@types/node/fs.d.ts | 4087 ++++++++ .../node_modules/@types/node/fs/promises.d.ts | 1202 +++ .../node_modules/@types/node/globals.d.ts | 325 + .../@types/node/globals.global.d.ts | 1 + .../node_modules/@types/node/http.d.ts | 1756 ++++ .../node_modules/@types/node/http2.d.ts | 2129 ++++ .../node_modules/@types/node/https.d.ts | 441 + .../node_modules/@types/node/index.d.ts | 133 + .../node_modules/@types/node/inspector.d.ts | 2748 ++++++ .../node_modules/@types/node/module.d.ts | 257 + .../node_modules/@types/node/net.d.ts | 893 ++ .../node_modules/@types/node/os.d.ts | 477 + .../node_modules/@types/node/package.json | 232 + .../node_modules/@types/node/path.d.ts | 191 + .../node_modules/@types/node/perf_hooks.d.ts | 638 ++ .../node_modules/@types/node/process.d.ts | 1495 +++ .../node_modules/@types/node/punycode.d.ts | 117 + .../node_modules/@types/node/querystring.d.ts | 131 + .../node_modules/@types/node/readline.d.ts | 526 + .../@types/node/readline/promises.d.ts | 145 + .../node_modules/@types/node/repl.d.ts | 424 + .../node_modules/@types/node/stream.d.ts | 1568 +++ .../@types/node/stream/consumers.d.ts | 12 + .../@types/node/stream/promises.d.ts | 42 + .../node_modules/@types/node/stream/web.d.ts | 330 + .../@types/node/string_decoder.d.ts | 67 + .../node_modules/@types/node/test.d.ts | 1461 +++ .../node_modules/@types/node/timers.d.ts | 225 + .../@types/node/timers/promises.d.ts | 93 + .../node_modules/@types/node/tls.d.ts | 1130 +++ .../@types/node/trace_events.d.ts | 182 + .../@types/node/ts4.8/assert.d.ts | 972 ++ .../@types/node/ts4.8/assert/strict.d.ts | 8 + .../@types/node/ts4.8/async_hooks.d.ts | 532 + .../@types/node/ts4.8/buffer.d.ts | 2354 +++++ .../@types/node/ts4.8/child_process.d.ts | 1400 +++ .../@types/node/ts4.8/cluster.d.ts | 414 + .../@types/node/ts4.8/console.d.ts | 412 + .../@types/node/ts4.8/constants.d.ts | 18 + .../@types/node/ts4.8/crypto.d.ts | 3977 ++++++++ .../node_modules/@types/node/ts4.8/dgram.d.ts | 550 ++ .../node/ts4.8/diagnostics_channel.d.ts | 191 + .../node_modules/@types/node/ts4.8/dns.d.ts | 668 ++ .../@types/node/ts4.8/dns/promises.d.ts | 414 + .../@types/node/ts4.8/dom-events.d.ts | 126 + .../@types/node/ts4.8/domain.d.ts | 170 + .../@types/node/ts4.8/events.d.ts | 788 ++ .../node_modules/@types/node/ts4.8/fs.d.ts | 4087 ++++++++ .../@types/node/ts4.8/fs/promises.d.ts | 1202 +++ .../@types/node/ts4.8/globals.d.ts | 325 + .../@types/node/ts4.8/globals.global.d.ts | 1 + .../node_modules/@types/node/ts4.8/http.d.ts | 1756 ++++ .../node_modules/@types/node/ts4.8/http2.d.ts | 2129 ++++ .../node_modules/@types/node/ts4.8/https.d.ts | 441 + .../node_modules/@types/node/ts4.8/index.d.ts | 88 + .../@types/node/ts4.8/inspector.d.ts | 2748 ++++++ .../@types/node/ts4.8/module.d.ts | 257 + .../node_modules/@types/node/ts4.8/net.d.ts | 893 ++ .../node_modules/@types/node/ts4.8/os.d.ts | 477 + .../node_modules/@types/node/ts4.8/path.d.ts | 191 + .../@types/node/ts4.8/perf_hooks.d.ts | 638 ++ .../@types/node/ts4.8/process.d.ts | 1495 +++ .../@types/node/ts4.8/punycode.d.ts | 117 + .../@types/node/ts4.8/querystring.d.ts | 131 + .../@types/node/ts4.8/readline.d.ts | 526 + .../@types/node/ts4.8/readline/promises.d.ts | 145 + .../node_modules/@types/node/ts4.8/repl.d.ts | 424 + .../@types/node/ts4.8/stream.d.ts | 1430 +++ .../@types/node/ts4.8/stream/consumers.d.ts | 12 + .../@types/node/ts4.8/stream/promises.d.ts | 42 + .../@types/node/ts4.8/stream/web.d.ts | 330 + .../@types/node/ts4.8/string_decoder.d.ts | 67 + .../node_modules/@types/node/ts4.8/test.d.ts | 1461 +++ .../@types/node/ts4.8/timers.d.ts | 225 + .../@types/node/ts4.8/timers/promises.d.ts | 93 + .../node_modules/@types/node/ts4.8/tls.d.ts | 1130 +++ .../@types/node/ts4.8/trace_events.d.ts | 182 + .../node_modules/@types/node/ts4.8/tty.d.ts | 208 + .../node_modules/@types/node/ts4.8/url.d.ts | 915 ++ .../node_modules/@types/node/ts4.8/util.d.ts | 2116 ++++ .../node_modules/@types/node/ts4.8/v8.d.ts | 635 ++ .../node_modules/@types/node/ts4.8/vm.d.ts | 895 ++ .../node_modules/@types/node/ts4.8/wasi.d.ts | 152 + .../@types/node/ts4.8/worker_threads.d.ts | 694 ++ .../node_modules/@types/node/ts4.8/zlib.d.ts | 517 + .../node_modules/@types/node/tty.d.ts | 208 + .../node_modules/@types/node/url.d.ts | 915 ++ .../node_modules/@types/node/util.d.ts | 2116 ++++ .../node_modules/@types/node/v8.d.ts | 635 ++ .../node_modules/@types/node/vm.d.ts | 895 ++ .../node_modules/@types/node/wasi.d.ts | 152 + .../@types/node/worker_threads.d.ts | 694 ++ .../node_modules/@types/node/zlib.d.ts | 517 + .../node_modules/accepts/HISTORY.md | 243 + .../cors_proxy/node_modules/accepts/LICENSE | 23 + .../cors_proxy/node_modules/accepts/README.md | 140 + .../cors_proxy/node_modules/accepts/index.js | 238 + .../node_modules/accepts/package.json | 47 + .../node_modules/array-flatten/LICENSE | 21 + .../node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + .../node_modules/body-parser/HISTORY.md | 657 ++ .../node_modules/body-parser/LICENSE | 23 + .../node_modules/body-parser/README.md | 464 + .../node_modules/body-parser/SECURITY.md | 25 + .../node_modules/body-parser/index.js | 156 + .../node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 236 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + .../node_modules/body-parser/package.json | 56 + .../node_modules/braces/CHANGELOG.md | 184 + .../cors_proxy/node_modules/braces/LICENSE | 21 + .../cors_proxy/node_modules/braces/README.md | 593 ++ .../cors_proxy/node_modules/braces/index.js | 170 + .../node_modules/braces/lib/compile.js | 57 + .../node_modules/braces/lib/constants.js | 57 + .../node_modules/braces/lib/expand.js | 113 + .../node_modules/braces/lib/parse.js | 333 + .../node_modules/braces/lib/stringify.js | 32 + .../node_modules/braces/lib/utils.js | 112 + .../node_modules/braces/package.json | 77 + .../cors_proxy/node_modules/bytes/History.md | 97 + .../cors_proxy/node_modules/bytes/LICENSE | 23 + .../cors_proxy/node_modules/bytes/Readme.md | 152 + .../cors_proxy/node_modules/bytes/index.js | 170 + .../node_modules/bytes/package.json | 42 + .../node_modules/call-bind/.eslintignore | 1 + .../node_modules/call-bind/.eslintrc | 17 + .../call-bind/.github/FUNDING.yml | 12 + .../cors_proxy/node_modules/call-bind/.nycrc | 13 + .../node_modules/call-bind/CHANGELOG.md | 42 + .../cors_proxy/node_modules/call-bind/LICENSE | 21 + .../node_modules/call-bind/README.md | 2 + .../node_modules/call-bind/callBound.js | 15 + .../node_modules/call-bind/index.js | 47 + .../node_modules/call-bind/package.json | 80 + .../node_modules/call-bind/test/callBound.js | 55 + .../node_modules/call-bind/test/index.js | 66 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + .../node_modules/content-type/HISTORY.md | 29 + .../node_modules/content-type/LICENSE | 22 + .../node_modules/content-type/README.md | 94 + .../node_modules/content-type/index.js | 225 + .../node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + .../cors_proxy/node_modules/cookie/HISTORY.md | 142 + .../cors_proxy/node_modules/cookie/LICENSE | 24 + .../cors_proxy/node_modules/cookie/README.md | 302 + .../node_modules/cookie/SECURITY.md | 25 + .../cors_proxy/node_modules/cookie/index.js | 270 + .../node_modules/cookie/package.json | 44 + .../node_modules/cors/CONTRIBUTING.md | 33 + .../cors_proxy/node_modules/cors/HISTORY.md | 58 + .../ch15/cors_proxy/node_modules/cors/LICENSE | 22 + .../cors_proxy/node_modules/cors/README.md | 243 + .../cors_proxy/node_modules/cors/lib/index.js | 238 + .../cors_proxy/node_modules/cors/package.json | 41 + .../node_modules/debug/.coveralls.yml | 1 + .../cors_proxy/node_modules/debug/.eslintrc | 11 + .../cors_proxy/node_modules/debug/.npmignore | 9 + .../cors_proxy/node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../cors_proxy/node_modules/debug/LICENSE | 19 + .../cors_proxy/node_modules/debug/Makefile | 50 + .../cors_proxy/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../cors_proxy/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 49 + .../node_modules/debug/src/browser.js | 185 + .../node_modules/debug/src/debug.js | 202 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../cors_proxy/node_modules/debug/src/node.js | 248 + .../cors_proxy/node_modules/depd/History.md | 103 + .../ch15/cors_proxy/node_modules/depd/LICENSE | 22 + .../cors_proxy/node_modules/depd/Readme.md | 280 + .../cors_proxy/node_modules/depd/index.js | 538 ++ .../node_modules/depd/lib/browser/index.js | 77 + .../cors_proxy/node_modules/depd/package.json | 45 + .../cors_proxy/node_modules/destroy/LICENSE | 23 + .../cors_proxy/node_modules/destroy/README.md | 63 + .../cors_proxy/node_modules/destroy/index.js | 209 + .../node_modules/destroy/package.json | 48 + .../cors_proxy/node_modules/ee-first/LICENSE | 22 + .../node_modules/ee-first/README.md | 80 + .../cors_proxy/node_modules/ee-first/index.js | 95 + .../node_modules/ee-first/package.json | 29 + .../node_modules/encodeurl/HISTORY.md | 14 + .../cors_proxy/node_modules/encodeurl/LICENSE | 22 + .../node_modules/encodeurl/README.md | 128 + .../node_modules/encodeurl/index.js | 60 + .../node_modules/encodeurl/package.json | 40 + .../node_modules/escape-html/LICENSE | 24 + .../node_modules/escape-html/Readme.md | 43 + .../node_modules/escape-html/index.js | 78 + .../node_modules/escape-html/package.json | 24 + .../cors_proxy/node_modules/etag/HISTORY.md | 83 + .../ch15/cors_proxy/node_modules/etag/LICENSE | 22 + .../cors_proxy/node_modules/etag/README.md | 159 + .../cors_proxy/node_modules/etag/index.js | 131 + .../cors_proxy/node_modules/etag/package.json | 47 + .../node_modules/eventemitter3/LICENSE | 21 + .../node_modules/eventemitter3/README.md | 94 + .../node_modules/eventemitter3/index.d.ts | 134 + .../node_modules/eventemitter3/index.js | 336 + .../node_modules/eventemitter3/package.json | 56 + .../eventemitter3/umd/eventemitter3.js | 340 + .../eventemitter3/umd/eventemitter3.min.js | 1 + .../umd/eventemitter3.min.js.map | 1 + .../node_modules/express/History.md | 3588 +++++++ .../cors_proxy/node_modules/express/LICENSE | 24 + .../cors_proxy/node_modules/express/Readme.md | 166 + .../cors_proxy/node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ .../node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + .../node_modules/express/lib/request.js | 525 + .../node_modules/express/lib/response.js | 1169 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 225 + .../node_modules/express/lib/utils.js | 304 + .../node_modules/express/lib/view.js | 182 + .../node_modules/express/package.json | 99 + .../node_modules/fill-range/LICENSE | 21 + .../node_modules/fill-range/README.md | 237 + .../node_modules/fill-range/index.js | 249 + .../node_modules/fill-range/package.json | 69 + .../node_modules/finalhandler/HISTORY.md | 195 + .../node_modules/finalhandler/LICENSE | 22 + .../node_modules/finalhandler/README.md | 147 + .../node_modules/finalhandler/SECURITY.md | 25 + .../node_modules/finalhandler/index.js | 336 + .../node_modules/finalhandler/package.json | 46 + .../node_modules/follow-redirects/LICENSE | 18 + .../node_modules/follow-redirects/README.md | 155 + .../node_modules/follow-redirects/debug.js | 15 + .../node_modules/follow-redirects/http.js | 1 + .../node_modules/follow-redirects/https.js | 1 + .../node_modules/follow-redirects/index.js | 621 ++ .../follow-redirects/package.json | 59 + .../node_modules/forwarded/HISTORY.md | 21 + .../cors_proxy/node_modules/forwarded/LICENSE | 22 + .../node_modules/forwarded/README.md | 57 + .../node_modules/forwarded/index.js | 90 + .../node_modules/forwarded/package.json | 45 + .../cors_proxy/node_modules/fresh/HISTORY.md | 70 + .../cors_proxy/node_modules/fresh/LICENSE | 23 + .../cors_proxy/node_modules/fresh/README.md | 119 + .../cors_proxy/node_modules/fresh/index.js | 137 + .../node_modules/fresh/package.json | 46 + .../node_modules/function-bind/.editorconfig | 20 + .../node_modules/function-bind/.eslintrc | 15 + .../node_modules/function-bind/.jscs.json | 176 + .../node_modules/function-bind/.npmignore | 22 + .../node_modules/function-bind/.travis.yml | 168 + .../node_modules/function-bind/LICENSE | 20 + .../node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 52 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 63 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + .../node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + .../node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 117 + .../node_modules/get-intrinsic/LICENSE | 21 + .../node_modules/get-intrinsic/README.md | 71 + .../node_modules/get-intrinsic/index.js | 351 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + .../node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + .../node_modules/has-proto/CHANGELOG.md | 23 + .../cors_proxy/node_modules/has-proto/LICENSE | 21 + .../node_modules/has-proto/README.md | 38 + .../node_modules/has-proto/index.js | 11 + .../node_modules/has-proto/package.json | 74 + .../node_modules/has-proto/test/index.js | 19 + .../node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + .../node_modules/has-symbols/.nycrc | 9 + .../node_modules/has-symbols/CHANGELOG.md | 75 + .../node_modules/has-symbols/LICENSE | 21 + .../node_modules/has-symbols/README.md | 46 + .../node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 101 + .../node_modules/has-symbols/shams.js | 42 + .../node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../node_modules/has-symbols/test/tests.js | 56 + .../cors_proxy/node_modules/has/LICENSE-MIT | 22 + .../cors_proxy/node_modules/has/README.md | 18 + .../cors_proxy/node_modules/has/package.json | 48 + .../cors_proxy/node_modules/has/src/index.js | 5 + .../cors_proxy/node_modules/has/test/index.js | 10 + .../node_modules/http-errors/HISTORY.md | 180 + .../node_modules/http-errors/LICENSE | 23 + .../node_modules/http-errors/README.md | 169 + .../node_modules/http-errors/index.js | 289 + .../node_modules/http-errors/package.json | 50 + .../http-proxy-middleware/LICENSE | 22 + .../http-proxy-middleware/README.md | 598 ++ .../http-proxy-middleware/dist/_handlers.d.ts | 4 + .../http-proxy-middleware/dist/_handlers.js | 84 + .../dist/config-factory.d.ts | 6 + .../dist/config-factory.js | 80 + .../dist/context-matcher.d.ts | 2 + .../dist/context-matcher.js | 81 + .../http-proxy-middleware/dist/errors.d.ts | 6 + .../http-proxy-middleware/dist/errors.js | 10 + .../dist/handlers/fix-request-body.d.ts | 6 + .../dist/handlers/fix-request-body.js | 26 + .../dist/handlers/index.d.ts | 1 + .../dist/handlers/index.js | 13 + .../dist/handlers/public.d.ts | 2 + .../dist/handlers/public.js | 7 + .../dist/handlers/response-interceptor.d.ts | 12 + .../dist/handlers/response-interceptor.js | 86 + .../dist/http-proxy-middleware.d.ts | 35 + .../dist/http-proxy-middleware.js | 157 + .../http-proxy-middleware/dist/index.d.ts | 4 + .../http-proxy-middleware/dist/index.js | 20 + .../http-proxy-middleware/dist/logger.d.ts | 14 + .../http-proxy-middleware/dist/logger.js | 135 + .../dist/path-rewriter.d.ts | 7 + .../dist/path-rewriter.js | 66 + .../http-proxy-middleware/dist/router.d.ts | 1 + .../http-proxy-middleware/dist/router.js | 46 + .../http-proxy-middleware/dist/types.d.ts | 54 + .../http-proxy-middleware/dist/types.js | 6 + .../http-proxy-middleware/package.json | 109 + .../node_modules/http-proxy/.auto-changelog | 6 + .../node_modules/http-proxy/.gitattributes | 1 + .../node_modules/http-proxy/CHANGELOG.md | 1872 ++++ .../http-proxy/CODE_OF_CONDUCT.md | 74 + .../node_modules/http-proxy/LICENSE | 23 + .../node_modules/http-proxy/README.md | 568 ++ .../node_modules/http-proxy/codecov.yml | 10 + .../node_modules/http-proxy/index.js | 13 + .../node_modules/http-proxy/lib/http-proxy.js | 66 + .../http-proxy/lib/http-proxy/common.js | 248 + .../http-proxy/lib/http-proxy/index.js | 185 + .../lib/http-proxy/passes/web-incoming.js | 194 + .../lib/http-proxy/passes/web-outgoing.js | 147 + .../lib/http-proxy/passes/ws-incoming.js | 162 + .../node_modules/http-proxy/package.json | 41 + .../node_modules/http-proxy/renovate.json | 19 + .../node_modules/iconv-lite/Changelog.md | 162 + .../node_modules/iconv-lite/LICENSE | 21 + .../node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + .../node_modules/iconv-lite/lib/index.d.ts | 24 + .../node_modules/iconv-lite/lib/index.js | 153 + .../node_modules/iconv-lite/lib/streams.js | 121 + .../node_modules/iconv-lite/package.json | 46 + .../cors_proxy/node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + .../node_modules/inherits/package.json | 29 + .../cors_proxy/node_modules/ipaddr.js/LICENSE | 19 + .../node_modules/ipaddr.js/README.md | 233 + .../node_modules/ipaddr.js/ipaddr.min.js | 1 + .../node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + .../node_modules/ipaddr.js/package.json | 35 + .../node_modules/is-extglob/LICENSE | 21 + .../node_modules/is-extglob/README.md | 107 + .../node_modules/is-extglob/index.js | 20 + .../node_modules/is-extglob/package.json | 69 + .../cors_proxy/node_modules/is-glob/LICENSE | 21 + .../cors_proxy/node_modules/is-glob/README.md | 206 + .../cors_proxy/node_modules/is-glob/index.js | 150 + .../node_modules/is-glob/package.json | 81 + .../cors_proxy/node_modules/is-number/LICENSE | 21 + .../node_modules/is-number/README.md | 187 + .../node_modules/is-number/index.js | 18 + .../node_modules/is-number/package.json | 82 + .../node_modules/is-plain-obj/index.d.ts | 29 + .../node_modules/is-plain-obj/index.js | 10 + .../node_modules/is-plain-obj/license | 9 + .../node_modules/is-plain-obj/package.json | 39 + .../node_modules/is-plain-obj/readme.md | 51 + .../node_modules/media-typer/HISTORY.md | 22 + .../node_modules/media-typer/LICENSE | 22 + .../node_modules/media-typer/README.md | 81 + .../node_modules/media-typer/index.js | 270 + .../node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + .../node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 48 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 32 + .../node_modules/methods/HISTORY.md | 29 + .../cors_proxy/node_modules/methods/LICENSE | 24 + .../cors_proxy/node_modules/methods/README.md | 51 + .../cors_proxy/node_modules/methods/index.js | 69 + .../node_modules/methods/package.json | 36 + .../node_modules/micromatch/LICENSE | 21 + .../node_modules/micromatch/README.md | 1011 ++ .../node_modules/micromatch/index.js | 467 + .../node_modules/micromatch/package.json | 119 + .../node_modules/mime-db/HISTORY.md | 507 + .../cors_proxy/node_modules/mime-db/LICENSE | 23 + .../cors_proxy/node_modules/mime-db/README.md | 100 + .../cors_proxy/node_modules/mime-db/db.json | 8519 +++++++++++++++++ .../cors_proxy/node_modules/mime-db/index.js | 12 + .../node_modules/mime-db/package.json | 60 + .../node_modules/mime-types/HISTORY.md | 397 + .../node_modules/mime-types/LICENSE | 23 + .../node_modules/mime-types/README.md | 113 + .../node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 44 + .../cors_proxy/node_modules/mime/.npmignore | 0 .../cors_proxy/node_modules/mime/CHANGELOG.md | 164 + .../ch15/cors_proxy/node_modules/mime/LICENSE | 21 + .../cors_proxy/node_modules/mime/README.md | 90 + .../ch15/cors_proxy/node_modules/mime/cli.js | 8 + .../ch15/cors_proxy/node_modules/mime/mime.js | 108 + .../cors_proxy/node_modules/mime/package.json | 44 + .../cors_proxy/node_modules/mime/src/build.js | 53 + .../cors_proxy/node_modules/mime/src/test.js | 60 + .../cors_proxy/node_modules/mime/types.json | 1 + .../ch15/cors_proxy/node_modules/ms/index.js | 152 + .../cors_proxy/node_modules/ms/license.md | 21 + .../cors_proxy/node_modules/ms/package.json | 37 + .../ch15/cors_proxy/node_modules/ms/readme.md | 51 + .../node_modules/negotiator/HISTORY.md | 108 + .../node_modules/negotiator/LICENSE | 24 + .../node_modules/negotiator/README.md | 203 + .../node_modules/negotiator/index.js | 82 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../node_modules/negotiator/package.json | 42 + .../node_modules/object-assign/index.js | 90 + .../node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 42 + .../node_modules/object-assign/readme.md | 61 + .../node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + .../node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 370 + .../node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + .../node_modules/object-inspect/index.js | 516 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 97 + .../object-inspect/readme.markdown | 86 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + .../node_modules/object-inspect/test/fn.js | 76 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + .../node_modules/on-finished/HISTORY.md | 98 + .../node_modules/on-finished/LICENSE | 23 + .../node_modules/on-finished/README.md | 162 + .../node_modules/on-finished/index.js | 234 + .../node_modules/on-finished/package.json | 39 + .../node_modules/parseurl/HISTORY.md | 58 + .../cors_proxy/node_modules/parseurl/LICENSE | 24 + .../node_modules/parseurl/README.md | 133 + .../cors_proxy/node_modules/parseurl/index.js | 158 + .../node_modules/parseurl/package.json | 40 + .../node_modules/path-to-regexp/History.md | 36 + .../node_modules/path-to-regexp/LICENSE | 21 + .../node_modules/path-to-regexp/Readme.md | 35 + .../node_modules/path-to-regexp/index.js | 129 + .../node_modules/path-to-regexp/package.json | 30 + .../node_modules/picomatch/CHANGELOG.md | 136 + .../cors_proxy/node_modules/picomatch/LICENSE | 21 + .../node_modules/picomatch/README.md | 708 ++ .../node_modules/picomatch/index.js | 3 + .../node_modules/picomatch/lib/constants.js | 179 + .../node_modules/picomatch/lib/parse.js | 1091 +++ .../node_modules/picomatch/lib/picomatch.js | 342 + .../node_modules/picomatch/lib/scan.js | 391 + .../node_modules/picomatch/lib/utils.js | 64 + .../node_modules/picomatch/package.json | 81 + .../node_modules/proxy-addr/HISTORY.md | 161 + .../node_modules/proxy-addr/LICENSE | 22 + .../node_modules/proxy-addr/README.md | 139 + .../node_modules/proxy-addr/index.js | 327 + .../node_modules/proxy-addr/package.json | 47 + .../cors_proxy/node_modules/qs/.editorconfig | 43 + .../ch15/cors_proxy/node_modules/qs/.eslintrc | 38 + .../node_modules/qs/.github/FUNDING.yml | 12 + .../ch15/cors_proxy/node_modules/qs/.nycrc | 13 + .../cors_proxy/node_modules/qs/CHANGELOG.md | 546 ++ .../cors_proxy/node_modules/qs/LICENSE.md | 29 + .../ch15/cors_proxy/node_modules/qs/README.md | 625 ++ .../cors_proxy/node_modules/qs/dist/qs.js | 2054 ++++ .../cors_proxy/node_modules/qs/lib/formats.js | 23 + .../cors_proxy/node_modules/qs/lib/index.js | 11 + .../cors_proxy/node_modules/qs/lib/parse.js | 263 + .../node_modules/qs/lib/stringify.js | 326 + .../cors_proxy/node_modules/qs/lib/utils.js | 252 + .../cors_proxy/node_modules/qs/package.json | 77 + .../cors_proxy/node_modules/qs/test/parse.js | 855 ++ .../node_modules/qs/test/stringify.js | 909 ++ .../cors_proxy/node_modules/qs/test/utils.js | 136 + .../node_modules/range-parser/HISTORY.md | 56 + .../node_modules/range-parser/LICENSE | 23 + .../node_modules/range-parser/README.md | 84 + .../node_modules/range-parser/index.js | 162 + .../node_modules/range-parser/package.json | 44 + .../node_modules/raw-body/HISTORY.md | 303 + .../cors_proxy/node_modules/raw-body/LICENSE | 22 + .../node_modules/raw-body/README.md | 223 + .../node_modules/raw-body/SECURITY.md | 24 + .../node_modules/raw-body/index.d.ts | 87 + .../cors_proxy/node_modules/raw-body/index.js | 329 + .../node_modules/raw-body/package.json | 49 + .../node_modules/requires-port/.npmignore | 2 + .../node_modules/requires-port/.travis.yml | 19 + .../node_modules/requires-port/LICENSE | 22 + .../node_modules/requires-port/README.md | 47 + .../node_modules/requires-port/index.js | 38 + .../node_modules/requires-port/package.json | 47 + .../node_modules/requires-port/test.js | 98 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 ++ .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 65 + .../node_modules/safe-buffer/package.json | 51 + .../node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + .../node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 34 + .../node_modules/safer-buffer/safer.js | 77 + .../node_modules/safer-buffer/tests.js | 406 + .../cors_proxy/node_modules/send/HISTORY.md | 521 + .../ch15/cors_proxy/node_modules/send/LICENSE | 23 + .../cors_proxy/node_modules/send/README.md | 327 + .../cors_proxy/node_modules/send/SECURITY.md | 24 + .../cors_proxy/node_modules/send/index.js | 1143 +++ .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + .../cors_proxy/node_modules/send/package.json | 62 + .../node_modules/serve-static/HISTORY.md | 471 + .../node_modules/serve-static/LICENSE | 25 + .../node_modules/serve-static/README.md | 257 + .../node_modules/serve-static/index.js | 210 + .../node_modules/serve-static/package.json | 42 + .../node_modules/setprototypeof/LICENSE | 13 + .../node_modules/setprototypeof/README.md | 31 + .../node_modules/setprototypeof/index.d.ts | 2 + .../node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.eslintignore | 1 + .../node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + .../node_modules/side-channel/.nycrc | 13 + .../node_modules/side-channel/CHANGELOG.md | 65 + .../node_modules/side-channel/LICENSE | 21 + .../node_modules/side-channel/README.md | 2 + .../node_modules/side-channel/index.js | 124 + .../node_modules/side-channel/package.json | 67 + .../node_modules/side-channel/test/index.js | 78 + .../node_modules/statuses/HISTORY.md | 82 + .../cors_proxy/node_modules/statuses/LICENSE | 23 + .../node_modules/statuses/README.md | 136 + .../node_modules/statuses/codes.json | 65 + .../cors_proxy/node_modules/statuses/index.js | 146 + .../node_modules/statuses/package.json | 49 + .../node_modules/to-regex-range/LICENSE | 21 + .../node_modules/to-regex-range/README.md | 305 + .../node_modules/to-regex-range/index.js | 288 + .../node_modules/to-regex-range/package.json | 88 + .../node_modules/toidentifier/HISTORY.md | 9 + .../node_modules/toidentifier/LICENSE | 21 + .../node_modules/toidentifier/README.md | 61 + .../node_modules/toidentifier/index.js | 32 + .../node_modules/toidentifier/package.json | 38 + .../node_modules/type-is/HISTORY.md | 259 + .../cors_proxy/node_modules/type-is/LICENSE | 23 + .../cors_proxy/node_modules/type-is/README.md | 170 + .../cors_proxy/node_modules/type-is/index.js | 266 + .../node_modules/type-is/package.json | 45 + .../cors_proxy/node_modules/unpipe/HISTORY.md | 4 + .../cors_proxy/node_modules/unpipe/LICENSE | 22 + .../cors_proxy/node_modules/unpipe/README.md | 43 + .../cors_proxy/node_modules/unpipe/index.js | 69 + .../node_modules/unpipe/package.json | 27 + .../node_modules/utils-merge/.npmignore | 9 + .../node_modules/utils-merge/LICENSE | 20 + .../node_modules/utils-merge/README.md | 34 + .../node_modules/utils-merge/index.js | 23 + .../node_modules/utils-merge/package.json | 40 + .../cors_proxy/node_modules/vary/HISTORY.md | 39 + .../ch15/cors_proxy/node_modules/vary/LICENSE | 22 + .../cors_proxy/node_modules/vary/README.md | 101 + .../cors_proxy/node_modules/vary/index.js | 149 + .../cors_proxy/node_modules/vary/package.json | 43 + .../ch15/cors_proxy/package-lock.json | 794 ++ Murach/book_apps/ch15/cors_proxy/package.json | 7 + Murach/book_apps/ch15/cors_proxy/proxy.mjs | 20 + .../book_apps/ch15/email_list/email_list.txt | 4 + Murach/book_apps/ch15/email_list/read.js | 8 + Murach/book_apps/ch15/email_list/read.mjs | 6 + .../ch15/email_list/read_write_promises.mjs | 14 + Murach/book_apps/ch15/email_list_api/data.js | 55 + .../ch15/email_list_api/email_list.txt | 1 + Murach/book_apps/ch15/email_list_api/index.js | 22 + .../email_list_api/node_modules/.bin/mime | 12 + .../email_list_api/node_modules/.bin/mime.cmd | 17 + .../email_list_api/node_modules/.bin/mime.ps1 | 28 + .../node_modules/.package-lock.json | 616 ++ .../node_modules/accepts/HISTORY.md | 243 + .../node_modules/accepts/LICENSE | 23 + .../node_modules/accepts/README.md | 140 + .../node_modules/accepts/index.js | 238 + .../node_modules/accepts/package.json | 47 + .../node_modules/array-flatten/LICENSE | 21 + .../node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + .../node_modules/body-parser/HISTORY.md | 657 ++ .../node_modules/body-parser/LICENSE | 23 + .../node_modules/body-parser/README.md | 464 + .../node_modules/body-parser/SECURITY.md | 25 + .../node_modules/body-parser/index.js | 156 + .../node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 236 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + .../node_modules/body-parser/package.json | 56 + .../node_modules/bytes/History.md | 97 + .../email_list_api/node_modules/bytes/LICENSE | 23 + .../node_modules/bytes/Readme.md | 152 + .../node_modules/bytes/index.js | 170 + .../node_modules/bytes/package.json | 42 + .../node_modules/call-bind/.eslintignore | 1 + .../node_modules/call-bind/.eslintrc | 17 + .../call-bind/.github/FUNDING.yml | 12 + .../node_modules/call-bind/.nycrc | 13 + .../node_modules/call-bind/CHANGELOG.md | 42 + .../node_modules/call-bind/LICENSE | 21 + .../node_modules/call-bind/README.md | 2 + .../node_modules/call-bind/callBound.js | 15 + .../node_modules/call-bind/index.js | 47 + .../node_modules/call-bind/package.json | 80 + .../node_modules/call-bind/test/callBound.js | 55 + .../node_modules/call-bind/test/index.js | 66 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + .../node_modules/content-type/HISTORY.md | 29 + .../node_modules/content-type/LICENSE | 22 + .../node_modules/content-type/README.md | 94 + .../node_modules/content-type/index.js | 225 + .../node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + .../node_modules/cookie/HISTORY.md | 142 + .../node_modules/cookie/LICENSE | 24 + .../node_modules/cookie/README.md | 302 + .../node_modules/cookie/SECURITY.md | 25 + .../node_modules/cookie/index.js | 270 + .../node_modules/cookie/package.json | 44 + .../node_modules/cors/CONTRIBUTING.md | 33 + .../node_modules/cors/HISTORY.md | 58 + .../email_list_api/node_modules/cors/LICENSE | 22 + .../node_modules/cors/README.md | 243 + .../node_modules/cors/lib/index.js | 238 + .../node_modules/cors/package.json | 41 + .../node_modules/debug/.coveralls.yml | 1 + .../node_modules/debug/.eslintrc | 11 + .../node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../email_list_api/node_modules/debug/LICENSE | 19 + .../node_modules/debug/Makefile | 50 + .../node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../email_list_api/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 49 + .../node_modules/debug/src/browser.js | 185 + .../node_modules/debug/src/debug.js | 202 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../node_modules/debug/src/node.js | 248 + .../node_modules/depd/History.md | 103 + .../email_list_api/node_modules/depd/LICENSE | 22 + .../node_modules/depd/Readme.md | 280 + .../email_list_api/node_modules/depd/index.js | 538 ++ .../node_modules/depd/lib/browser/index.js | 77 + .../node_modules/depd/package.json | 45 + .../node_modules/destroy/LICENSE | 23 + .../node_modules/destroy/README.md | 63 + .../node_modules/destroy/index.js | 209 + .../node_modules/destroy/package.json | 48 + .../node_modules/ee-first/LICENSE | 22 + .../node_modules/ee-first/README.md | 80 + .../node_modules/ee-first/index.js | 95 + .../node_modules/ee-first/package.json | 29 + .../node_modules/encodeurl/HISTORY.md | 14 + .../node_modules/encodeurl/LICENSE | 22 + .../node_modules/encodeurl/README.md | 128 + .../node_modules/encodeurl/index.js | 60 + .../node_modules/encodeurl/package.json | 40 + .../node_modules/escape-html/LICENSE | 24 + .../node_modules/escape-html/Readme.md | 43 + .../node_modules/escape-html/index.js | 78 + .../node_modules/escape-html/package.json | 24 + .../node_modules/etag/HISTORY.md | 83 + .../email_list_api/node_modules/etag/LICENSE | 22 + .../node_modules/etag/README.md | 159 + .../email_list_api/node_modules/etag/index.js | 131 + .../node_modules/etag/package.json | 47 + .../node_modules/express/History.md | 3588 +++++++ .../node_modules/express/LICENSE | 24 + .../node_modules/express/Readme.md | 166 + .../node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ .../node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + .../node_modules/express/lib/request.js | 525 + .../node_modules/express/lib/response.js | 1169 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 225 + .../node_modules/express/lib/utils.js | 304 + .../node_modules/express/lib/view.js | 182 + .../node_modules/express/package.json | 99 + .../node_modules/finalhandler/HISTORY.md | 195 + .../node_modules/finalhandler/LICENSE | 22 + .../node_modules/finalhandler/README.md | 147 + .../node_modules/finalhandler/SECURITY.md | 25 + .../node_modules/finalhandler/index.js | 336 + .../node_modules/finalhandler/package.json | 46 + .../node_modules/forwarded/HISTORY.md | 21 + .../node_modules/forwarded/LICENSE | 22 + .../node_modules/forwarded/README.md | 57 + .../node_modules/forwarded/index.js | 90 + .../node_modules/forwarded/package.json | 45 + .../node_modules/fresh/HISTORY.md | 70 + .../email_list_api/node_modules/fresh/LICENSE | 23 + .../node_modules/fresh/README.md | 119 + .../node_modules/fresh/index.js | 137 + .../node_modules/fresh/package.json | 46 + .../node_modules/function-bind/.editorconfig | 20 + .../node_modules/function-bind/.eslintrc | 15 + .../node_modules/function-bind/.jscs.json | 176 + .../node_modules/function-bind/.npmignore | 22 + .../node_modules/function-bind/.travis.yml | 168 + .../node_modules/function-bind/LICENSE | 20 + .../node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 52 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 63 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + .../node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + .../node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 117 + .../node_modules/get-intrinsic/LICENSE | 21 + .../node_modules/get-intrinsic/README.md | 71 + .../node_modules/get-intrinsic/index.js | 351 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + .../node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + .../node_modules/has-proto/CHANGELOG.md | 23 + .../node_modules/has-proto/LICENSE | 21 + .../node_modules/has-proto/README.md | 38 + .../node_modules/has-proto/index.js | 11 + .../node_modules/has-proto/package.json | 74 + .../node_modules/has-proto/test/index.js | 19 + .../node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + .../node_modules/has-symbols/.nycrc | 9 + .../node_modules/has-symbols/CHANGELOG.md | 75 + .../node_modules/has-symbols/LICENSE | 21 + .../node_modules/has-symbols/README.md | 46 + .../node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 101 + .../node_modules/has-symbols/shams.js | 42 + .../node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../node_modules/has-symbols/test/tests.js | 56 + .../node_modules/has/LICENSE-MIT | 22 + .../email_list_api/node_modules/has/README.md | 18 + .../node_modules/has/package.json | 48 + .../node_modules/has/src/index.js | 5 + .../node_modules/has/test/index.js | 10 + .../node_modules/http-errors/HISTORY.md | 180 + .../node_modules/http-errors/LICENSE | 23 + .../node_modules/http-errors/README.md | 169 + .../node_modules/http-errors/index.js | 289 + .../node_modules/http-errors/package.json | 50 + .../node_modules/iconv-lite/Changelog.md | 162 + .../node_modules/iconv-lite/LICENSE | 21 + .../node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + .../node_modules/iconv-lite/lib/index.d.ts | 24 + .../node_modules/iconv-lite/lib/index.js | 153 + .../node_modules/iconv-lite/lib/streams.js | 121 + .../node_modules/iconv-lite/package.json | 46 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + .../node_modules/inherits/package.json | 29 + .../node_modules/ipaddr.js/LICENSE | 19 + .../node_modules/ipaddr.js/README.md | 233 + .../node_modules/ipaddr.js/ipaddr.min.js | 1 + .../node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + .../node_modules/ipaddr.js/package.json | 35 + .../node_modules/media-typer/HISTORY.md | 22 + .../node_modules/media-typer/LICENSE | 22 + .../node_modules/media-typer/README.md | 81 + .../node_modules/media-typer/index.js | 270 + .../node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + .../node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 48 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 32 + .../node_modules/methods/HISTORY.md | 29 + .../node_modules/methods/LICENSE | 24 + .../node_modules/methods/README.md | 51 + .../node_modules/methods/index.js | 69 + .../node_modules/methods/package.json | 36 + .../node_modules/mime-db/HISTORY.md | 507 + .../node_modules/mime-db/LICENSE | 23 + .../node_modules/mime-db/README.md | 100 + .../node_modules/mime-db/db.json | 8519 +++++++++++++++++ .../node_modules/mime-db/index.js | 12 + .../node_modules/mime-db/package.json | 60 + .../node_modules/mime-types/HISTORY.md | 397 + .../node_modules/mime-types/LICENSE | 23 + .../node_modules/mime-types/README.md | 113 + .../node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 44 + .../node_modules/mime/.npmignore | 0 .../node_modules/mime/CHANGELOG.md | 164 + .../email_list_api/node_modules/mime/LICENSE | 21 + .../node_modules/mime/README.md | 90 + .../email_list_api/node_modules/mime/cli.js | 8 + .../email_list_api/node_modules/mime/mime.js | 108 + .../node_modules/mime/package.json | 44 + .../node_modules/mime/src/build.js | 53 + .../node_modules/mime/src/test.js | 60 + .../node_modules/mime/types.json | 1 + .../email_list_api/node_modules/ms/index.js | 152 + .../email_list_api/node_modules/ms/license.md | 21 + .../node_modules/ms/package.json | 37 + .../email_list_api/node_modules/ms/readme.md | 51 + .../node_modules/negotiator/HISTORY.md | 108 + .../node_modules/negotiator/LICENSE | 24 + .../node_modules/negotiator/README.md | 203 + .../node_modules/negotiator/index.js | 82 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../node_modules/negotiator/package.json | 42 + .../node_modules/object-assign/index.js | 90 + .../node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 42 + .../node_modules/object-assign/readme.md | 61 + .../node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + .../node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 370 + .../node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + .../node_modules/object-inspect/index.js | 516 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 97 + .../object-inspect/readme.markdown | 86 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + .../node_modules/object-inspect/test/fn.js | 76 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + .../node_modules/on-finished/HISTORY.md | 98 + .../node_modules/on-finished/LICENSE | 23 + .../node_modules/on-finished/README.md | 162 + .../node_modules/on-finished/index.js | 234 + .../node_modules/on-finished/package.json | 39 + .../node_modules/parseurl/HISTORY.md | 58 + .../node_modules/parseurl/LICENSE | 24 + .../node_modules/parseurl/README.md | 133 + .../node_modules/parseurl/index.js | 158 + .../node_modules/parseurl/package.json | 40 + .../node_modules/path-to-regexp/History.md | 36 + .../node_modules/path-to-regexp/LICENSE | 21 + .../node_modules/path-to-regexp/Readme.md | 35 + .../node_modules/path-to-regexp/index.js | 129 + .../node_modules/path-to-regexp/package.json | 30 + .../node_modules/proxy-addr/HISTORY.md | 161 + .../node_modules/proxy-addr/LICENSE | 22 + .../node_modules/proxy-addr/README.md | 139 + .../node_modules/proxy-addr/index.js | 327 + .../node_modules/proxy-addr/package.json | 47 + .../node_modules/qs/.editorconfig | 43 + .../email_list_api/node_modules/qs/.eslintrc | 38 + .../node_modules/qs/.github/FUNDING.yml | 12 + .../email_list_api/node_modules/qs/.nycrc | 13 + .../node_modules/qs/CHANGELOG.md | 546 ++ .../email_list_api/node_modules/qs/LICENSE.md | 29 + .../email_list_api/node_modules/qs/README.md | 625 ++ .../email_list_api/node_modules/qs/dist/qs.js | 2054 ++++ .../node_modules/qs/lib/formats.js | 23 + .../node_modules/qs/lib/index.js | 11 + .../node_modules/qs/lib/parse.js | 263 + .../node_modules/qs/lib/stringify.js | 326 + .../node_modules/qs/lib/utils.js | 252 + .../node_modules/qs/package.json | 77 + .../node_modules/qs/test/parse.js | 855 ++ .../node_modules/qs/test/stringify.js | 909 ++ .../node_modules/qs/test/utils.js | 136 + .../node_modules/range-parser/HISTORY.md | 56 + .../node_modules/range-parser/LICENSE | 23 + .../node_modules/range-parser/README.md | 84 + .../node_modules/range-parser/index.js | 162 + .../node_modules/range-parser/package.json | 44 + .../node_modules/raw-body/HISTORY.md | 303 + .../node_modules/raw-body/LICENSE | 22 + .../node_modules/raw-body/README.md | 223 + .../node_modules/raw-body/SECURITY.md | 24 + .../node_modules/raw-body/index.d.ts | 87 + .../node_modules/raw-body/index.js | 329 + .../node_modules/raw-body/package.json | 49 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 ++ .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 65 + .../node_modules/safe-buffer/package.json | 51 + .../node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + .../node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 34 + .../node_modules/safer-buffer/safer.js | 77 + .../node_modules/safer-buffer/tests.js | 406 + .../node_modules/send/HISTORY.md | 521 + .../email_list_api/node_modules/send/LICENSE | 23 + .../node_modules/send/README.md | 327 + .../node_modules/send/SECURITY.md | 24 + .../email_list_api/node_modules/send/index.js | 1143 +++ .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + .../node_modules/send/package.json | 62 + .../node_modules/serve-static/HISTORY.md | 471 + .../node_modules/serve-static/LICENSE | 25 + .../node_modules/serve-static/README.md | 257 + .../node_modules/serve-static/index.js | 210 + .../node_modules/serve-static/package.json | 42 + .../node_modules/setprototypeof/LICENSE | 13 + .../node_modules/setprototypeof/README.md | 31 + .../node_modules/setprototypeof/index.d.ts | 2 + .../node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.eslintignore | 1 + .../node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + .../node_modules/side-channel/.nycrc | 13 + .../node_modules/side-channel/CHANGELOG.md | 65 + .../node_modules/side-channel/LICENSE | 21 + .../node_modules/side-channel/README.md | 2 + .../node_modules/side-channel/index.js | 124 + .../node_modules/side-channel/package.json | 67 + .../node_modules/side-channel/test/index.js | 78 + .../node_modules/statuses/HISTORY.md | 82 + .../node_modules/statuses/LICENSE | 23 + .../node_modules/statuses/README.md | 136 + .../node_modules/statuses/codes.json | 65 + .../node_modules/statuses/index.js | 146 + .../node_modules/statuses/package.json | 49 + .../node_modules/toidentifier/HISTORY.md | 9 + .../node_modules/toidentifier/LICENSE | 21 + .../node_modules/toidentifier/README.md | 61 + .../node_modules/toidentifier/index.js | 32 + .../node_modules/toidentifier/package.json | 38 + .../node_modules/type-is/HISTORY.md | 259 + .../node_modules/type-is/LICENSE | 23 + .../node_modules/type-is/README.md | 170 + .../node_modules/type-is/index.js | 266 + .../node_modules/type-is/package.json | 45 + .../node_modules/unpipe/HISTORY.md | 4 + .../node_modules/unpipe/LICENSE | 22 + .../node_modules/unpipe/README.md | 43 + .../node_modules/unpipe/index.js | 69 + .../node_modules/unpipe/package.json | 27 + .../node_modules/utils-merge/.npmignore | 9 + .../node_modules/utils-merge/LICENSE | 20 + .../node_modules/utils-merge/README.md | 34 + .../node_modules/utils-merge/index.js | 23 + .../node_modules/utils-merge/package.json | 40 + .../node_modules/vary/HISTORY.md | 39 + .../email_list_api/node_modules/vary/LICENSE | 22 + .../node_modules/vary/README.md | 101 + .../email_list_api/node_modules/vary/index.js | 149 + .../node_modules/vary/package.json | 43 + .../ch15/email_list_api/package-lock.json | 625 ++ .../ch15/email_list_api/package.json | 17 + .../ch15/email_manager/email_manager.js | 90 + .../book_apps/ch15/email_manager/index.html | 35 + Murach/book_apps/ch15/email_manager/main.css | 45 + Murach/book_apps/ch15/future_value/index.js | 18 + Murach/book_apps/ch15/future_value/index2.js | 26 + Murach/book_apps/ch15/future_value/index3.mjs | 15 + .../future_value/murach-calc-future-value.mjs | 7 + .../book_apps/ch15/future_value/package.json | 13 + Murach/book_apps/ch16/drawing/drawing.js | 33 + Murach/book_apps/ch16/drawing/index.html | 20 + Murach/book_apps/ch16/drawing/main.css | 7 + Murach/book_apps/ch16/movie_list/index.html | 25 + Murach/book_apps/ch16/movie_list/main.css | 10 + .../book_apps/ch16/movie_list/movie_list.js | 20 + .../book_apps/ch16/movie_list/pizza_order.js | 49 + Murach/book_apps/ch16/pong/index.html | 15 + Murach/book_apps/ch16/pong/main.css | 6 + Murach/book_apps/ch16/pong/pong.js | 97 + Murach/book_apps/ch16/smiley/index.html | 16 + Murach/book_apps/ch16/smiley/main.css | 3 + Murach/book_apps/ch16/smiley/smiley.js | 27 + Murach/book_apps/ch16/tic_tac_toe/index.html | 16 + Murach/book_apps/ch16/tic_tac_toe/main.css | 6 + .../book_apps/ch16/tic_tac_toe/tic_tac_toe.js | 30 + Murach/exercises/ch01/die_roller/index.html | 22 + Murach/exercises/ch01/die_roller/main.css | 12 + Murach/exercises/ch02/numbers/index.html | 23 + Murach/exercises/ch02/scripts/index.html | 16 + Murach/exercises/ch02/strings/index.html | 17 + Murach/exercises/ch03/coin_flip/index.html | 15 + .../ch03/guess_number/guess_number.js | 35 + Murach/exercises/ch03/guess_number/index.html | 9 + Murach/exercises/ch03/stairs/index.html | 12 + Murach/exercises/ch04/countries/index.html | 26 + Murach/exercises/ch04/prices/index.html | 28 + Murach/exercises/ch04/words/index.html | 41 + Murach/exercises/ch05/dice_roller/index.html | 32 + .../ch05/dice_roller_dom/dice_roller.js | 24 + .../exercises/ch05/dice_roller_dom/index.html | 21 + .../exercises/ch05/dice_roller_dom/main.css | 16 + Murach/exercises/ch05/movie_list/index.html | 16 + Murach/exercises/ch05/movie_list/main.css | 16 + Murach/exercises/ch05/movie_list/movie.js | 18 + .../ch06/image_carousel/carousel.css | 13 + .../exercises/ch06/image_carousel/carousel.js | 26 + .../ch06/image_carousel/images/bison.jpg | Bin 0 -> 88319 bytes .../ch06/image_carousel/images/deer.jpg | Bin 0 -> 105300 bytes .../ch06/image_carousel/images/hero.jpg | Bin 0 -> 83787 bytes .../ch06/image_carousel/images/release.jpg | Bin 0 -> 74621 bytes .../exercises/ch06/image_carousel/index.html | 24 + Murach/exercises/ch06/movie_ranker/index.html | 30 + Murach/exercises/ch06/movie_ranker/mover.css | 42 + Murach/exercises/ch06/movie_ranker/mover.js | 14 + .../exercises/ch06/register_3.0/confirm.html | 17 + Murach/exercises/ch06/register_3.0/index.html | 59 + .../exercises/ch06/register_3.0/register.css | 39 + .../exercises/ch06/register_3.0/register.js | 78 + .../ch07/future_value/future_value.css | 25 + .../ch07/future_value/future_value.js | 58 + Murach/exercises/ch07/future_value/index.html | 33 + Murach/exercises/ch07/movie_ranker/index.html | 30 + Murach/exercises/ch07/movie_ranker/mover.css | 42 + Murach/exercises/ch07/movie_ranker/mover.js | 30 + Murach/exercises/ch08/invoices/index.html | 29 + Murach/exercises/ch08/invoices/invoices.css | 39 + Murach/exercises/ch08/invoices/invoices.js | 26 + Murach/exercises/ch08/stopwatch/index.html | 20 + Murach/exercises/ch08/stopwatch/main.css | 32 + Murach/exercises/ch08/stopwatch/stopwatch.js | 31 + Murach/exercises/ch09/creditcard/confirm.html | 14 + .../exercises/ch09/creditcard/creditcard.css | 28 + .../exercises/ch09/creditcard/creditcard.js | 14 + Murach/exercises/ch09/creditcard/index.html | 40 + Murach/exercises/ch09/exceptions/guess.js | 55 + Murach/exercises/ch09/exceptions/index.html | 21 + Murach/exercises/ch09/exceptions/main.css | 18 + .../exercises/ch10/countdown/count_down.css | 36 + Murach/exercises/ch10/countdown/count_down.js | 47 + Murach/exercises/ch10/countdown/index.html | 28 + Murach/exercises/ch11/cart/cart.css | 48 + Murach/exercises/ch11/cart/cart.js | 60 + Murach/exercises/ch11/cart/index.html | 21 + Murach/exercises/ch11/invoices/index.html | 40 + Murach/exercises/ch11/invoices/invoices.css | 41 + Murach/exercises/ch11/invoices/invoices.js | 73 + .../exercises/ch12/count_down/count_down.css | 36 + .../exercises/ch12/count_down/count_down.js | 46 + Murach/exercises/ch12/count_down/index.html | 34 + Murach/exercises/ch12/test_scores/index.html | 36 + .../ch12/test_scores/test_scores.css | 31 + .../exercises/ch12/test_scores/test_scores.js | 54 + .../exercises/ch13/count_down/count_down.css | 36 + .../exercises/ch13/count_down/count_down.js | 28 + Murach/exercises/ch13/count_down/index.html | 33 + Murach/exercises/ch13/count_down/lib_event.js | 39 + Murach/exercises/ch13/trips/index.html | 37 + Murach/exercises/ch13/trips/lib_trip.js | 17 + Murach/exercises/ch13/trips/lib_trips.js | 36 + Murach/exercises/ch13/trips/trips.css | 29 + Murach/exercises/ch13/trips/trips.js | 40 + Murach/exercises/ch14/apod/apod.css | 28 + Murach/exercises/ch14/apod/apod.js | 87 + .../ch14/apod/images/notavailable.png | Bin 0 -> 4387 bytes Murach/exercises/ch14/apod/index.html | 25 + .../ch14/email_manager/email_manager.js | 66 + .../exercises/ch14/email_manager/index.html | 35 + Murach/exercises/ch14/email_manager/main.css | 45 + Murach/exercises/ch15/fs/names.txt | 3 + Murach/exercises/ch15/fs/read.mjs | 2 + Murach/exercises/ch15/task_list/index.html | 30 + Murach/exercises/ch15/task_list/task_list.css | 40 + Murach/exercises/ch15/task_list/task_list.js | 70 + Murach/exercises/ch15/task_list_api/data.mjs | 51 + Murach/exercises/ch15/task_list_api/index.mjs | 24 + Murach/exercises/ch15/task_list_api/tasks.txt | 1 + Murach/exercises/ch15/test_scores/index.js | 23 + Murach/exercises/ch16/logo/index.html | 45 + Murach/exercises/ch16/logo/logo.js | 80 + Murach/exercises/ch16/logo/logo.png | Bin 0 -> 30756 bytes Murach/exercises/ch16/logo/main.css | 12 + Murach/exercises/ch16/pizza_order/index.html | 36 + Murach/exercises/ch16/pizza_order/logo.png | Bin 0 -> 30756 bytes Murach/exercises/ch16/pizza_order/main.css | 39 + .../exercises/ch16/pizza_order/pizza_order.js | 96 + Murach/exercises/ch16/screen_saver/index.html | 15 + Murach/exercises/ch16/screen_saver/main.css | 6 + .../ch16/screen_saver/screen_saver.js | 50 + Murach/solutions/ch01/die_roller/index.html | 22 + Murach/solutions/ch01/die_roller/main.css | 12 + Murach/solutions/ch01/welcome/index.html | 13 + Murach/solutions/ch01/welcome/main.css | 26 + Murach/solutions/ch02/numbers/index.html | 36 + Murach/solutions/ch02/scripts/index.html | 19 + Murach/solutions/ch02/strings/index.html | 21 + Murach/solutions/ch03/coin_flip/index.html | 42 + .../ch03/guess_number/guess_number.js | 44 + Murach/solutions/ch03/guess_number/index.html | 9 + Murach/solutions/ch03/stairs/index.html | 25 + Murach/solutions/ch04/countries/index.html | 36 + Murach/solutions/ch04/prices/index.html | 56 + Murach/solutions/ch04/words/index.html | 48 + Murach/solutions/ch05/dice_roller/index.html | 35 + .../ch05/dice_roller_dom/dice_roller.js | 36 + .../solutions/ch05/dice_roller_dom/index.html | 21 + .../solutions/ch05/dice_roller_dom/main.css | 16 + Murach/solutions/ch05/movie_list/index.html | 16 + Murach/solutions/ch05/movie_list/main.css | 16 + Murach/solutions/ch05/movie_list/movie.js | 33 + .../ch06/image_carousel/carousel.css | 13 + .../solutions/ch06/image_carousel/carousel.js | 30 + .../ch06/image_carousel/images/bison.jpg | Bin 0 -> 88319 bytes .../ch06/image_carousel/images/deer.jpg | Bin 0 -> 105300 bytes .../ch06/image_carousel/images/hero.jpg | Bin 0 -> 83787 bytes .../ch06/image_carousel/images/release.jpg | Bin 0 -> 74621 bytes .../solutions/ch06/image_carousel/index.html | 24 + Murach/solutions/ch06/movie_ranker/index.html | 30 + Murach/solutions/ch06/movie_ranker/mover.css | 42 + Murach/solutions/ch06/movie_ranker/mover.js | 32 + .../solutions/ch06/register_3.0/confirm.html | 17 + Murach/solutions/ch06/register_3.0/index.html | 69 + .../solutions/ch06/register_3.0/register.css | 39 + .../solutions/ch06/register_3.0/register.js | 91 + .../ch07/future_value/future_value.css | 25 + .../ch07/future_value/future_value.js | 59 + Murach/solutions/ch07/future_value/index.html | 33 + .../solutions/ch07/future_value/test_plan.txt | 10 + Murach/solutions/ch07/movie_ranker/index.html | 30 + Murach/solutions/ch07/movie_ranker/mover.css | 42 + Murach/solutions/ch07/movie_ranker/mover.js | 30 + Murach/solutions/ch08/invoices/index.html | 29 + Murach/solutions/ch08/invoices/invoices.css | 39 + Murach/solutions/ch08/invoices/invoices.js | 42 + Murach/solutions/ch08/stopwatch/index.html | 20 + Murach/solutions/ch08/stopwatch/main.css | 32 + Murach/solutions/ch08/stopwatch/stopwatch.js | 41 + Murach/solutions/ch09/creditcard/confirm.html | 14 + .../solutions/ch09/creditcard/creditcard.css | 28 + .../solutions/ch09/creditcard/creditcard.js | 49 + Murach/solutions/ch09/creditcard/index.html | 43 + Murach/solutions/ch09/exceptions/guess.js | 59 + Murach/solutions/ch09/exceptions/index.html | 21 + Murach/solutions/ch09/exceptions/main.css | 18 + .../solutions/ch10/countdown/count_down.css | 36 + Murach/solutions/ch10/countdown/count_down.js | 55 + Murach/solutions/ch10/countdown/index.html | 27 + Murach/solutions/ch11/cart/cart.css | 48 + Murach/solutions/ch11/cart/cart.js | 69 + Murach/solutions/ch11/cart/index.html | 21 + Murach/solutions/ch11/invoices/index.html | 40 + Murach/solutions/ch11/invoices/invoices.css | 41 + Murach/solutions/ch11/invoices/invoices.js | 85 + .../solutions/ch12/count_down/count_down.css | 36 + .../solutions/ch12/count_down/count_down.js | 28 + Murach/solutions/ch12/count_down/index.html | 33 + Murach/solutions/ch12/count_down/lib_event.js | 39 + Murach/solutions/ch12/test_scores/index.html | 37 + .../ch12/test_scores/lib_test_scores.js | 32 + .../ch12/test_scores/lib_validation.js | 10 + .../ch12/test_scores/test_scores.css | 31 + .../solutions/ch12/test_scores/test_scores.js | 42 + .../solutions/ch13/count_down/count_down.css | 36 + .../solutions/ch13/count_down/count_down.js | 28 + Murach/solutions/ch13/count_down/index.html | 33 + Murach/solutions/ch13/count_down/lib_event.js | 39 + Murach/solutions/ch13/trips/index.html | 44 + Murach/solutions/ch13/trips/lib_trip.js | 17 + Murach/solutions/ch13/trips/lib_trips.js | 30 + Murach/solutions/ch13/trips/lib_validation.js | 16 + Murach/solutions/ch13/trips/trips.css | 29 + Murach/solutions/ch13/trips/trips.js | 40 + Murach/solutions/ch14/apod/apod.css | 28 + Murach/solutions/ch14/apod/apod.js | 76 + .../ch14/apod/images/notavailable.png | Bin 0 -> 4387 bytes Murach/solutions/ch14/apod/index.html | 26 + Murach/solutions/ch14/apod/lib_apod.js | 16 + .../ch14/email_manager/email_manager.js | 94 + .../solutions/ch14/email_manager/index.html | 33 + Murach/solutions/ch14/email_manager/main.css | 45 + Murach/solutions/ch15/fs/names.txt | 3 + Murach/solutions/ch15/fs/read.mjs | 8 + Murach/solutions/ch15/task_list/index.html | 30 + Murach/solutions/ch15/task_list/task_list.css | 40 + Murach/solutions/ch15/task_list/task_list.js | 69 + Murach/solutions/ch15/task_list_api/data.mjs | 51 + Murach/solutions/ch15/task_list_api/index.mjs | 24 + .../ch15/task_list_api/node_modules/.bin/mime | 12 + .../task_list_api/node_modules/.bin/mime.cmd | 17 + .../task_list_api/node_modules/.bin/mime.ps1 | 28 + .../node_modules/.package-lock.json | 669 ++ .../node_modules/accepts/HISTORY.md | 243 + .../node_modules/accepts/LICENSE | 23 + .../node_modules/accepts/README.md | 140 + .../node_modules/accepts/index.js | 238 + .../node_modules/accepts/package.json | 47 + .../node_modules/array-flatten/LICENSE | 21 + .../node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + .../node_modules/body-parser/HISTORY.md | 657 ++ .../node_modules/body-parser/LICENSE | 23 + .../node_modules/body-parser/README.md | 464 + .../node_modules/body-parser/SECURITY.md | 25 + .../node_modules/body-parser/index.js | 156 + .../node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 236 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + .../node_modules/body-parser/package.json | 56 + .../node_modules/bytes/History.md | 97 + .../task_list_api/node_modules/bytes/LICENSE | 23 + .../node_modules/bytes/Readme.md | 152 + .../task_list_api/node_modules/bytes/index.js | 170 + .../node_modules/bytes/package.json | 42 + .../node_modules/call-bind/.eslintignore | 1 + .../node_modules/call-bind/.eslintrc | 16 + .../call-bind/.github/FUNDING.yml | 12 + .../node_modules/call-bind/.nycrc | 9 + .../node_modules/call-bind/CHANGELOG.md | 77 + .../node_modules/call-bind/LICENSE | 21 + .../node_modules/call-bind/README.md | 64 + .../node_modules/call-bind/callBound.js | 15 + .../node_modules/call-bind/index.js | 44 + .../node_modules/call-bind/package.json | 90 + .../node_modules/call-bind/test/callBound.js | 54 + .../node_modules/call-bind/test/index.js | 80 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + .../node_modules/content-type/HISTORY.md | 29 + .../node_modules/content-type/LICENSE | 22 + .../node_modules/content-type/README.md | 94 + .../node_modules/content-type/index.js | 225 + .../node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + .../node_modules/cookie/HISTORY.md | 142 + .../task_list_api/node_modules/cookie/LICENSE | 24 + .../node_modules/cookie/README.md | 302 + .../node_modules/cookie/SECURITY.md | 25 + .../node_modules/cookie/index.js | 270 + .../node_modules/cookie/package.json | 44 + .../node_modules/cors/CONTRIBUTING.md | 33 + .../node_modules/cors/HISTORY.md | 58 + .../task_list_api/node_modules/cors/LICENSE | 22 + .../task_list_api/node_modules/cors/README.md | 243 + .../node_modules/cors/lib/index.js | 238 + .../node_modules/cors/package.json | 41 + .../node_modules/debug/.coveralls.yml | 1 + .../node_modules/debug/.eslintrc | 11 + .../node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../task_list_api/node_modules/debug/LICENSE | 19 + .../task_list_api/node_modules/debug/Makefile | 50 + .../node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../task_list_api/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 49 + .../node_modules/debug/src/browser.js | 185 + .../node_modules/debug/src/debug.js | 202 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../node_modules/debug/src/node.js | 248 + .../define-data-property/.eslintrc | 24 + .../define-data-property/.github/FUNDING.yml | 12 + .../node_modules/define-data-property/.nycrc | 13 + .../define-data-property/CHANGELOG.md | 41 + .../node_modules/define-data-property/LICENSE | 21 + .../define-data-property/README.md | 67 + .../define-data-property/index.d.ts | 3 + .../define-data-property/index.d.ts.map | 1 + .../define-data-property/index.js | 68 + .../define-data-property/package.json | 113 + .../define-data-property/test/index.js | 392 + .../define-data-property/tsconfig.json | 59 + .../node_modules/depd/History.md | 103 + .../task_list_api/node_modules/depd/LICENSE | 22 + .../task_list_api/node_modules/depd/Readme.md | 280 + .../task_list_api/node_modules/depd/index.js | 538 ++ .../node_modules/depd/lib/browser/index.js | 77 + .../node_modules/depd/package.json | 45 + .../node_modules/destroy/LICENSE | 23 + .../node_modules/destroy/README.md | 63 + .../node_modules/destroy/index.js | 209 + .../node_modules/destroy/package.json | 48 + .../node_modules/ee-first/LICENSE | 22 + .../node_modules/ee-first/README.md | 80 + .../node_modules/ee-first/index.js | 95 + .../node_modules/ee-first/package.json | 29 + .../node_modules/encodeurl/HISTORY.md | 14 + .../node_modules/encodeurl/LICENSE | 22 + .../node_modules/encodeurl/README.md | 128 + .../node_modules/encodeurl/index.js | 60 + .../node_modules/encodeurl/package.json | 40 + .../node_modules/escape-html/LICENSE | 24 + .../node_modules/escape-html/Readme.md | 43 + .../node_modules/escape-html/index.js | 78 + .../node_modules/escape-html/package.json | 24 + .../node_modules/etag/HISTORY.md | 83 + .../task_list_api/node_modules/etag/LICENSE | 22 + .../task_list_api/node_modules/etag/README.md | 159 + .../task_list_api/node_modules/etag/index.js | 131 + .../node_modules/etag/package.json | 47 + .../node_modules/express/History.md | 3588 +++++++ .../node_modules/express/LICENSE | 24 + .../node_modules/express/Readme.md | 166 + .../node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ .../node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + .../node_modules/express/lib/request.js | 525 + .../node_modules/express/lib/response.js | 1169 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 225 + .../node_modules/express/lib/utils.js | 304 + .../node_modules/express/lib/view.js | 182 + .../node_modules/express/package.json | 99 + .../node_modules/finalhandler/HISTORY.md | 195 + .../node_modules/finalhandler/LICENSE | 22 + .../node_modules/finalhandler/README.md | 147 + .../node_modules/finalhandler/SECURITY.md | 25 + .../node_modules/finalhandler/index.js | 336 + .../node_modules/finalhandler/package.json | 46 + .../node_modules/forwarded/HISTORY.md | 21 + .../node_modules/forwarded/LICENSE | 22 + .../node_modules/forwarded/README.md | 57 + .../node_modules/forwarded/index.js | 90 + .../node_modules/forwarded/package.json | 45 + .../node_modules/fresh/HISTORY.md | 70 + .../task_list_api/node_modules/fresh/LICENSE | 23 + .../node_modules/fresh/README.md | 119 + .../task_list_api/node_modules/fresh/index.js | 137 + .../node_modules/fresh/package.json | 46 + .../node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + .../node_modules/function-bind/.nycrc | 13 + .../node_modules/function-bind/CHANGELOG.md | 136 + .../node_modules/function-bind/LICENSE | 20 + .../node_modules/function-bind/README.md | 46 + .../function-bind/implementation.js | 84 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 87 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + .../node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + .../node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 125 + .../node_modules/get-intrinsic/LICENSE | 21 + .../node_modules/get-intrinsic/README.md | 71 + .../node_modules/get-intrinsic/index.js | 351 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + .../task_list_api/node_modules/gopd/.eslintrc | 16 + .../node_modules/gopd/.github/FUNDING.yml | 12 + .../node_modules/gopd/CHANGELOG.md | 25 + .../task_list_api/node_modules/gopd/LICENSE | 21 + .../task_list_api/node_modules/gopd/README.md | 40 + .../task_list_api/node_modules/gopd/index.js | 16 + .../node_modules/gopd/package.json | 71 + .../node_modules/gopd/test/index.js | 35 + .../has-property-descriptors/.eslintrc | 13 + .../.github/FUNDING.yml | 12 + .../has-property-descriptors/.nycrc | 9 + .../has-property-descriptors/CHANGELOG.md | 27 + .../has-property-descriptors/LICENSE | 21 + .../has-property-descriptors/README.md | 43 + .../has-property-descriptors/index.js | 33 + .../has-property-descriptors/package.json | 77 + .../has-property-descriptors/test/index.js | 57 + .../node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + .../node_modules/has-proto/CHANGELOG.md | 23 + .../node_modules/has-proto/LICENSE | 21 + .../node_modules/has-proto/README.md | 38 + .../node_modules/has-proto/index.js | 11 + .../node_modules/has-proto/package.json | 74 + .../node_modules/has-proto/test/index.js | 19 + .../node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + .../node_modules/has-symbols/.nycrc | 9 + .../node_modules/has-symbols/CHANGELOG.md | 75 + .../node_modules/has-symbols/LICENSE | 21 + .../node_modules/has-symbols/README.md | 46 + .../node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 101 + .../node_modules/has-symbols/shams.js | 42 + .../node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../node_modules/has-symbols/test/tests.js | 56 + .../node_modules/hasown/.eslintrc | 5 + .../node_modules/hasown/.github/FUNDING.yml | 12 + .../task_list_api/node_modules/hasown/.nycrc | 13 + .../node_modules/hasown/CHANGELOG.md | 20 + .../task_list_api/node_modules/hasown/LICENSE | 21 + .../node_modules/hasown/README.md | 40 + .../node_modules/hasown/index.d.ts | 3 + .../node_modules/hasown/index.d.ts.map | 1 + .../node_modules/hasown/index.js | 8 + .../node_modules/hasown/package.json | 91 + .../node_modules/hasown/tsconfig.json | 49 + .../node_modules/http-errors/HISTORY.md | 180 + .../node_modules/http-errors/LICENSE | 23 + .../node_modules/http-errors/README.md | 169 + .../node_modules/http-errors/index.js | 289 + .../node_modules/http-errors/package.json | 50 + .../node_modules/iconv-lite/Changelog.md | 162 + .../node_modules/iconv-lite/LICENSE | 21 + .../node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + .../node_modules/iconv-lite/lib/index.d.ts | 24 + .../node_modules/iconv-lite/lib/index.js | 153 + .../node_modules/iconv-lite/lib/streams.js | 121 + .../node_modules/iconv-lite/package.json | 46 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + .../node_modules/inherits/package.json | 29 + .../node_modules/ipaddr.js/LICENSE | 19 + .../node_modules/ipaddr.js/README.md | 233 + .../node_modules/ipaddr.js/ipaddr.min.js | 1 + .../node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + .../node_modules/ipaddr.js/package.json | 35 + .../node_modules/media-typer/HISTORY.md | 22 + .../node_modules/media-typer/LICENSE | 22 + .../node_modules/media-typer/README.md | 81 + .../node_modules/media-typer/index.js | 270 + .../node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + .../node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 48 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 32 + .../node_modules/methods/HISTORY.md | 29 + .../node_modules/methods/LICENSE | 24 + .../node_modules/methods/README.md | 51 + .../node_modules/methods/index.js | 69 + .../node_modules/methods/package.json | 36 + .../node_modules/mime-db/HISTORY.md | 507 + .../node_modules/mime-db/LICENSE | 23 + .../node_modules/mime-db/README.md | 100 + .../node_modules/mime-db/db.json | 8519 +++++++++++++++++ .../node_modules/mime-db/index.js | 12 + .../node_modules/mime-db/package.json | 60 + .../node_modules/mime-types/HISTORY.md | 397 + .../node_modules/mime-types/LICENSE | 23 + .../node_modules/mime-types/README.md | 113 + .../node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 44 + .../node_modules/mime/.npmignore | 0 .../node_modules/mime/CHANGELOG.md | 164 + .../task_list_api/node_modules/mime/LICENSE | 21 + .../task_list_api/node_modules/mime/README.md | 90 + .../task_list_api/node_modules/mime/cli.js | 8 + .../task_list_api/node_modules/mime/mime.js | 108 + .../node_modules/mime/package.json | 44 + .../node_modules/mime/src/build.js | 53 + .../node_modules/mime/src/test.js | 60 + .../node_modules/mime/types.json | 1 + .../task_list_api/node_modules/ms/index.js | 152 + .../task_list_api/node_modules/ms/license.md | 21 + .../node_modules/ms/package.json | 37 + .../task_list_api/node_modules/ms/readme.md | 51 + .../node_modules/negotiator/HISTORY.md | 108 + .../node_modules/negotiator/LICENSE | 24 + .../node_modules/negotiator/README.md | 203 + .../node_modules/negotiator/index.js | 82 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../node_modules/negotiator/package.json | 42 + .../node_modules/object-assign/index.js | 90 + .../node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 42 + .../node_modules/object-assign/readme.md | 61 + .../node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + .../node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 389 + .../node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + .../node_modules/object-inspect/index.js | 524 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 99 + .../object-inspect/readme.markdown | 86 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + .../node_modules/object-inspect/test/fn.js | 76 + .../object-inspect/test/global.js | 17 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + .../node_modules/on-finished/HISTORY.md | 98 + .../node_modules/on-finished/LICENSE | 23 + .../node_modules/on-finished/README.md | 162 + .../node_modules/on-finished/index.js | 234 + .../node_modules/on-finished/package.json | 39 + .../node_modules/parseurl/HISTORY.md | 58 + .../node_modules/parseurl/LICENSE | 24 + .../node_modules/parseurl/README.md | 133 + .../node_modules/parseurl/index.js | 158 + .../node_modules/parseurl/package.json | 40 + .../node_modules/path-to-regexp/History.md | 36 + .../node_modules/path-to-regexp/LICENSE | 21 + .../node_modules/path-to-regexp/Readme.md | 35 + .../node_modules/path-to-regexp/index.js | 129 + .../node_modules/path-to-regexp/package.json | 30 + .../node_modules/proxy-addr/HISTORY.md | 161 + .../node_modules/proxy-addr/LICENSE | 22 + .../node_modules/proxy-addr/README.md | 139 + .../node_modules/proxy-addr/index.js | 327 + .../node_modules/proxy-addr/package.json | 47 + .../node_modules/qs/.editorconfig | 43 + .../task_list_api/node_modules/qs/.eslintrc | 38 + .../node_modules/qs/.github/FUNDING.yml | 12 + .../ch15/task_list_api/node_modules/qs/.nycrc | 13 + .../node_modules/qs/CHANGELOG.md | 546 ++ .../task_list_api/node_modules/qs/LICENSE.md | 29 + .../task_list_api/node_modules/qs/README.md | 625 ++ .../task_list_api/node_modules/qs/dist/qs.js | 2054 ++++ .../node_modules/qs/lib/formats.js | 23 + .../node_modules/qs/lib/index.js | 11 + .../node_modules/qs/lib/parse.js | 263 + .../node_modules/qs/lib/stringify.js | 326 + .../node_modules/qs/lib/utils.js | 252 + .../node_modules/qs/package.json | 77 + .../node_modules/qs/test/parse.js | 855 ++ .../node_modules/qs/test/stringify.js | 909 ++ .../node_modules/qs/test/utils.js | 136 + .../node_modules/range-parser/HISTORY.md | 56 + .../node_modules/range-parser/LICENSE | 23 + .../node_modules/range-parser/README.md | 84 + .../node_modules/range-parser/index.js | 162 + .../node_modules/range-parser/package.json | 44 + .../node_modules/raw-body/HISTORY.md | 303 + .../node_modules/raw-body/LICENSE | 22 + .../node_modules/raw-body/README.md | 223 + .../node_modules/raw-body/SECURITY.md | 24 + .../node_modules/raw-body/index.d.ts | 87 + .../node_modules/raw-body/index.js | 329 + .../node_modules/raw-body/package.json | 49 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 ++ .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 65 + .../node_modules/safe-buffer/package.json | 51 + .../node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + .../node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 34 + .../node_modules/safer-buffer/safer.js | 77 + .../node_modules/safer-buffer/tests.js | 406 + .../node_modules/send/HISTORY.md | 521 + .../task_list_api/node_modules/send/LICENSE | 23 + .../task_list_api/node_modules/send/README.md | 327 + .../node_modules/send/SECURITY.md | 24 + .../task_list_api/node_modules/send/index.js | 1143 +++ .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + .../node_modules/send/package.json | 62 + .../node_modules/serve-static/HISTORY.md | 471 + .../node_modules/serve-static/LICENSE | 25 + .../node_modules/serve-static/README.md | 257 + .../node_modules/serve-static/index.js | 210 + .../node_modules/serve-static/package.json | 42 + .../set-function-length/.eslintrc | 27 + .../set-function-length/.github/FUNDING.yml | 12 + .../node_modules/set-function-length/.nycrc | 13 + .../set-function-length/CHANGELOG.md | 41 + .../node_modules/set-function-length/LICENSE | 21 + .../set-function-length/README.md | 56 + .../node_modules/set-function-length/env.js | 19 + .../node_modules/set-function-length/index.js | 41 + .../set-function-length/package.json | 84 + .../node_modules/setprototypeof/LICENSE | 13 + .../node_modules/setprototypeof/README.md | 31 + .../node_modules/setprototypeof/index.d.ts | 2 + .../node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.eslintignore | 1 + .../node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + .../node_modules/side-channel/.nycrc | 13 + .../node_modules/side-channel/CHANGELOG.md | 65 + .../node_modules/side-channel/LICENSE | 21 + .../node_modules/side-channel/README.md | 2 + .../node_modules/side-channel/index.js | 124 + .../node_modules/side-channel/package.json | 67 + .../node_modules/side-channel/test/index.js | 78 + .../node_modules/statuses/HISTORY.md | 82 + .../node_modules/statuses/LICENSE | 23 + .../node_modules/statuses/README.md | 136 + .../node_modules/statuses/codes.json | 65 + .../node_modules/statuses/index.js | 146 + .../node_modules/statuses/package.json | 49 + .../node_modules/toidentifier/HISTORY.md | 9 + .../node_modules/toidentifier/LICENSE | 21 + .../node_modules/toidentifier/README.md | 61 + .../node_modules/toidentifier/index.js | 32 + .../node_modules/toidentifier/package.json | 38 + .../node_modules/type-is/HISTORY.md | 259 + .../node_modules/type-is/LICENSE | 23 + .../node_modules/type-is/README.md | 170 + .../node_modules/type-is/index.js | 266 + .../node_modules/type-is/package.json | 45 + .../node_modules/unpipe/HISTORY.md | 4 + .../task_list_api/node_modules/unpipe/LICENSE | 22 + .../node_modules/unpipe/README.md | 43 + .../node_modules/unpipe/index.js | 69 + .../node_modules/unpipe/package.json | 27 + .../node_modules/utils-merge/.npmignore | 9 + .../node_modules/utils-merge/LICENSE | 20 + .../node_modules/utils-merge/README.md | 34 + .../node_modules/utils-merge/index.js | 23 + .../node_modules/utils-merge/package.json | 40 + .../node_modules/vary/HISTORY.md | 39 + .../task_list_api/node_modules/vary/LICENSE | 22 + .../task_list_api/node_modules/vary/README.md | 101 + .../task_list_api/node_modules/vary/index.js | 149 + .../node_modules/vary/package.json | 43 + .../solutions/ch15/task_list_api/package.json | 78 + Murach/solutions/ch15/task_list_api/tasks.txt | 1 + Murach/solutions/ch15/test_scores/index.js | 26 + Murach/solutions/ch16/logo/index.html | 45 + Murach/solutions/ch16/logo/logo.js | 87 + Murach/solutions/ch16/logo/logo.png | Bin 0 -> 30756 bytes Murach/solutions/ch16/logo/main.css | 20 + Murach/solutions/ch16/pizza_order/index.html | 36 + Murach/solutions/ch16/pizza_order/logo.png | Bin 0 -> 30756 bytes Murach/solutions/ch16/pizza_order/main.css | 39 + .../solutions/ch16/pizza_order/pizza_order.js | 103 + Murach/solutions/ch16/screen_saver/index.html | 15 + Murach/solutions/ch16/screen_saver/main.css | 6 + .../ch16/screen_saver/screen_saver.js | 56 + 2015 files changed, 304279 insertions(+) create mode 100644 Murach/.DS_Store create mode 100644 Murach/book_apps/ch01/die_roller/index.html create mode 100644 Murach/book_apps/ch01/die_roller/main.css create mode 100644 Murach/book_apps/ch01/email_list/add.html create mode 100644 Murach/book_apps/ch01/email_list/email_list.js create mode 100644 Murach/book_apps/ch01/email_list/index.html create mode 100644 Murach/book_apps/ch01/email_list/main.css create mode 100644 Murach/book_apps/ch01/welcome/index.html create mode 100644 Murach/book_apps/ch01/welcome/main.css create mode 100644 Murach/book_apps/ch02/miles_to_kms/index.html create mode 100644 Murach/book_apps/ch02/miles_to_kms/miles_to_kms.js create mode 100644 Murach/book_apps/ch02/test_scores/index.html create mode 100644 Murach/book_apps/ch02/test_scores/test_scores.js create mode 100644 Murach/book_apps/ch03/future_value/future_value.js create mode 100644 Murach/book_apps/ch03/future_value/index.html create mode 100644 Murach/book_apps/ch03/guess_number/guess_number.js create mode 100644 Murach/book_apps/ch03/guess_number/index.html create mode 100644 Murach/book_apps/ch03/magic_eight_ball/index.html create mode 100644 Murach/book_apps/ch03/magic_eight_ball/magic_eight_ball.js create mode 100644 Murach/book_apps/ch04/bio/bio.js create mode 100644 Murach/book_apps/ch04/bio/index.html create mode 100644 Murach/book_apps/ch04/email_check/email_check.js create mode 100644 Murach/book_apps/ch04/email_check/index.html create mode 100644 Murach/book_apps/ch04/test_scores/index.html create mode 100644 Murach/book_apps/ch04/test_scores/test_scores.js create mode 100644 Murach/book_apps/ch04/test_scores2/index.html create mode 100644 Murach/book_apps/ch04/test_scores2/test_scores.js create mode 100644 Murach/book_apps/ch05/bio/bio.js create mode 100644 Murach/book_apps/ch05/bio/index.html create mode 100644 Murach/book_apps/ch05/future_value/future_value.js create mode 100644 Murach/book_apps/ch05/future_value/index.html create mode 100644 Murach/book_apps/ch05/guess_number/guess.js create mode 100644 Murach/book_apps/ch05/guess_number/index.html create mode 100644 Murach/book_apps/ch05/guess_number/main.css create mode 100644 Murach/book_apps/ch05/typewriter/index.html create mode 100644 Murach/book_apps/ch05/typewriter/typewriter.css create mode 100644 Murach/book_apps/ch05/typewriter/typewriter.js create mode 100644 Murach/book_apps/ch06/faqs/faqs.css create mode 100644 Murach/book_apps/ch06/faqs/faqs.js create mode 100644 Murach/book_apps/ch06/faqs/images/minus.png create mode 100644 Murach/book_apps/ch06/faqs/images/plus.png create mode 100644 Murach/book_apps/ch06/faqs/index.html create mode 100644 Murach/book_apps/ch06/image_swap/image_swap.css create mode 100644 Murach/book_apps/ch06/image_swap/image_swap.js create mode 100644 Murach/book_apps/ch06/image_swap/images/bison.jpg create mode 100644 Murach/book_apps/ch06/image_swap/images/deer.jpg create mode 100644 Murach/book_apps/ch06/image_swap/images/hero.jpg create mode 100644 Murach/book_apps/ch06/image_swap/images/release.jpg create mode 100644 Murach/book_apps/ch06/image_swap/index.html create mode 100644 Murach/book_apps/ch06/image_swap/thumbnails/bison.jpg create mode 100644 Murach/book_apps/ch06/image_swap/thumbnails/deer.jpg create mode 100644 Murach/book_apps/ch06/image_swap/thumbnails/hero.jpg create mode 100644 Murach/book_apps/ch06/image_swap/thumbnails/release.jpg create mode 100644 Murach/book_apps/ch06/register/confirm.html create mode 100644 Murach/book_apps/ch06/register/index.html create mode 100644 Murach/book_apps/ch06/register/register.css create mode 100644 Murach/book_apps/ch06/register/register.js create mode 100644 Murach/book_apps/ch06/register_2.0/confirm.html create mode 100644 Murach/book_apps/ch06/register_2.0/index.html create mode 100644 Murach/book_apps/ch06/register_2.0/register.css create mode 100644 Murach/book_apps/ch06/register_2.0/register.js create mode 100644 Murach/book_apps/ch07/future_value/future_value.css create mode 100644 Murach/book_apps/ch07/future_value/future_value.js create mode 100644 Murach/book_apps/ch07/future_value/index.html create mode 100644 Murach/book_apps/ch07/future_value_no_debug_statements/future_value.css create mode 100644 Murach/book_apps/ch07/future_value_no_debug_statements/future_value.js create mode 100644 Murach/book_apps/ch07/future_value_no_debug_statements/index.html create mode 100644 Murach/book_apps/ch08/clock/clock.js create mode 100644 Murach/book_apps/ch08/clock/index.html create mode 100644 Murach/book_apps/ch08/clock/main.css create mode 100644 Murach/book_apps/ch08/countdown/countdown.css create mode 100644 Murach/book_apps/ch08/countdown/countdown.js create mode 100644 Murach/book_apps/ch08/countdown/index.html create mode 100644 Murach/book_apps/ch08/slide_show/images/bison.jpg create mode 100644 Murach/book_apps/ch08/slide_show/images/deer.jpg create mode 100644 Murach/book_apps/ch08/slide_show/images/hero.jpg create mode 100644 Murach/book_apps/ch08/slide_show/images/release.jpg create mode 100644 Murach/book_apps/ch08/slide_show/index.html create mode 100644 Murach/book_apps/ch08/slide_show/slide_show.css create mode 100644 Murach/book_apps/ch08/slide_show/slide_show.js create mode 100644 Murach/book_apps/ch08/timer/index.html create mode 100644 Murach/book_apps/ch08/timer/main.css create mode 100644 Murach/book_apps/ch08/timer/timer.js create mode 100644 Murach/book_apps/ch08/trivia/index.html create mode 100644 Murach/book_apps/ch08/trivia/main.css create mode 100644 Murach/book_apps/ch09/future_value/calc_future_value.js create mode 100644 Murach/book_apps/ch09/future_value/future_value.css create mode 100644 Murach/book_apps/ch09/future_value/future_value.js create mode 100644 Murach/book_apps/ch09/future_value/index.html create mode 100644 Murach/book_apps/ch09/register/confirm.html create mode 100644 Murach/book_apps/ch09/register/index.html create mode 100644 Murach/book_apps/ch09/register/register.css create mode 100644 Murach/book_apps/ch09/register_2.0/confirm.html create mode 100644 Murach/book_apps/ch09/register_2.0/index.html create mode 100644 Murach/book_apps/ch09/register_2.0/register.css create mode 100644 Murach/book_apps/ch09/register_2.0/register.js create mode 100644 Murach/book_apps/ch10/future_value/future_value.css create mode 100644 Murach/book_apps/ch10/future_value/future_value.js create mode 100644 Murach/book_apps/ch10/future_value/index.html create mode 100644 Murach/book_apps/ch10/hit_counter/hit_counter.js create mode 100644 Murach/book_apps/ch10/hit_counter/index.html create mode 100644 Murach/book_apps/ch10/hit_counter/main.css create mode 100644 Murach/book_apps/ch10/hit_counter/test.html create mode 100644 Murach/book_apps/ch10/task_list/index.html create mode 100644 Murach/book_apps/ch10/task_list/task_list.css create mode 100644 Murach/book_apps/ch10/task_list/task_list.js create mode 100644 Murach/book_apps/ch11/task_list/index.html create mode 100644 Murach/book_apps/ch11/task_list/task_list.css create mode 100644 Murach/book_apps/ch11/task_list/task_list.js create mode 100644 Murach/book_apps/ch11/test_scores/index.html create mode 100644 Murach/book_apps/ch11/test_scores/test_scores.css create mode 100644 Murach/book_apps/ch11/test_scores/test_scores.js create mode 100644 Murach/book_apps/ch12/invoice/index.html create mode 100644 Murach/book_apps/ch12/invoice/invoice.js create mode 100644 Murach/book_apps/ch12/invoice/lib_invoice.js create mode 100644 Murach/book_apps/ch12/invoice/main.css create mode 100644 Murach/book_apps/ch12/task_list/index.html create mode 100644 Murach/book_apps/ch12/task_list/lib_storage.js create mode 100644 Murach/book_apps/ch12/task_list/lib_task.js create mode 100644 Murach/book_apps/ch12/task_list/lib_task_list.js create mode 100644 Murach/book_apps/ch12/task_list/main.css create mode 100644 Murach/book_apps/ch12/task_list/task_list.js create mode 100644 Murach/book_apps/ch12/trips/index.html create mode 100644 Murach/book_apps/ch12/trips/lib_trips.js create mode 100644 Murach/book_apps/ch12/trips/trips.css create mode 100644 Murach/book_apps/ch12/trips/trips.js create mode 100644 Murach/book_apps/ch13/clock/clock.js create mode 100644 Murach/book_apps/ch13/clock/index.html create mode 100644 Murach/book_apps/ch13/clock/main.css create mode 100644 Murach/book_apps/ch13/general_modules/DOM.js create mode 100644 Murach/book_apps/ch13/general_modules/storage.js create mode 100644 Murach/book_apps/ch13/slide_show/images/bison.jpg create mode 100644 Murach/book_apps/ch13/slide_show/images/deer.jpg create mode 100644 Murach/book_apps/ch13/slide_show/images/hero.jpg create mode 100644 Murach/book_apps/ch13/slide_show/images/release.jpg create mode 100644 Murach/book_apps/ch13/slide_show/index.html create mode 100644 Murach/book_apps/ch13/slide_show/lib_DOM.js create mode 100644 Murach/book_apps/ch13/slide_show/lib_slide_show.js create mode 100644 Murach/book_apps/ch13/slide_show/main.css create mode 100644 Murach/book_apps/ch13/slide_show/slide_show.js create mode 100644 Murach/book_apps/ch13/task_list/index.html create mode 100644 Murach/book_apps/ch13/task_list/modules/task.js create mode 100644 Murach/book_apps/ch13/task_list/modules/task_list.js create mode 100644 Murach/book_apps/ch13/task_list/modules/task_storage.js create mode 100644 Murach/book_apps/ch13/task_list/task_list.css create mode 100644 Murach/book_apps/ch13/task_list/task_list.js create mode 100644 Murach/book_apps/ch14/astronomy_pod/apod.css create mode 100644 Murach/book_apps/ch14/astronomy_pod/apod.js create mode 100644 Murach/book_apps/ch14/astronomy_pod/images/notavailable.png create mode 100644 Murach/book_apps/ch14/astronomy_pod/index.html create mode 100644 Murach/book_apps/ch14/user_directory/index.html create mode 100644 Murach/book_apps/ch14/user_directory/main.css create mode 100644 Murach/book_apps/ch14/user_directory/mod_users.js create mode 100644 Murach/book_apps/ch14/user_directory/user_directory.js create mode 100644 Murach/book_apps/ch15/cors_proxy/index.html create mode 100644 Murach/book_apps/ch15/cors_proxy/main.css create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/.bin/mime create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/.bin/mime.cmd create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/.bin/mime.ps1 create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/.package-lock.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/http-proxy/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/http-proxy/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/http-proxy/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/http-proxy/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/assert.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/assert/strict.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/async_hooks.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/buffer.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/child_process.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/cluster.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/console.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/constants.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/crypto.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/dgram.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/diagnostics_channel.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/dns.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/dns/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/dom-events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/domain.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/fs.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/fs/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/globals.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/globals.global.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/http.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/http2.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/https.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/inspector.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/module.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/net.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/os.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/path.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/perf_hooks.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/process.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/punycode.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/querystring.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/readline.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/readline/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/repl.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/stream.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/stream/consumers.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/stream/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/stream/web.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/string_decoder.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/test.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/timers.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/timers/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/tls.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/trace_events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/assert.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/assert/strict.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/async_hooks.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/buffer.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/child_process.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/cluster.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/console.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/constants.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/crypto.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/dgram.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/dns.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/dns/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/dom-events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/domain.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/fs.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/fs/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/globals.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/globals.global.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/http.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/http2.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/https.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/inspector.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/module.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/net.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/os.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/path.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/perf_hooks.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/process.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/punycode.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/querystring.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/readline.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/readline/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/repl.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/stream.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/stream/consumers.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/stream/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/stream/web.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/string_decoder.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/test.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/timers.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/timers/promises.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/tls.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/trace_events.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/tty.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/url.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/util.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/v8.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/vm.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/wasi.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/worker_threads.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/ts4.8/zlib.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/tty.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/url.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/util.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/v8.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/vm.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/wasi.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/worker_threads.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/@types/node/zlib.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/accepts/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/accepts/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/accepts/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/accepts/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/accepts/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/array-flatten/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/array-flatten/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/array-flatten/array-flatten.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/array-flatten/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/SECURITY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/lib/read.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/lib/types/json.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/lib/types/raw.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/lib/types/text.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/body-parser/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/compile.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/constants.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/expand.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/parse.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/stringify.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/lib/utils.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/braces/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/bytes/History.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/bytes/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/bytes/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/bytes/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/bytes/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/.eslintignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/callBound.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/test/callBound.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/call-bind/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-disposition/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-disposition/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-disposition/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-disposition/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-disposition/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-type/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-type/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-type/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-type/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/content-type/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie-signature/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie-signature/History.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie-signature/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie-signature/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie-signature/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/SECURITY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cookie/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/CONTRIBUTING.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/lib/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/cors/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/.coveralls.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/.travis.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/Makefile create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/component.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/karma.conf.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/node.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/src/browser.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/src/debug.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/src/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/src/inspector-log.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/debug/src/node.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/History.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/lib/browser/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/depd/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/destroy/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/destroy/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/destroy/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/destroy/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ee-first/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ee-first/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ee-first/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ee-first/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/encodeurl/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/encodeurl/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/encodeurl/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/encodeurl/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/encodeurl/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/escape-html/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/escape-html/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/escape-html/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/escape-html/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/etag/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/etag/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/etag/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/etag/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/etag/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/umd/eventemitter3.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/umd/eventemitter3.min.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/eventemitter3/umd/eventemitter3.min.js.map create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/History.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/application.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/express.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/middleware/init.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/middleware/query.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/request.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/response.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/router/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/router/layer.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/router/route.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/utils.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/lib/view.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/express/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fill-range/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fill-range/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fill-range/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fill-range/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/SECURITY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/finalhandler/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/debug.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/http.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/https.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/follow-redirects/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/forwarded/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/forwarded/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/forwarded/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/forwarded/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/forwarded/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fresh/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fresh/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fresh/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fresh/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/fresh/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/.editorconfig create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/.jscs.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/.travis.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/implementation.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/test/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/function-bind/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-proto/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/shams.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/test/shams/core-js.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has-symbols/test/tests.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has/LICENSE-MIT create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has/src/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/has/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-errors/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-errors/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-errors/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-errors/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-errors/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/_handlers.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/_handlers.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/config-factory.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/config-factory.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/context-matcher.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/context-matcher.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/errors.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/errors.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/fix-request-body.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/fix-request-body.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/public.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/public.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/response-interceptor.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/handlers/response-interceptor.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/http-proxy-middleware.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/http-proxy-middleware.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/logger.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/logger.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/path-rewriter.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/path-rewriter.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/router.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/router.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/types.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/dist/types.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy-middleware/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/.auto-changelog create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/.gitattributes create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/CODE_OF_CONDUCT.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/codecov.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy/common.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/http-proxy/renovate.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/Changelog.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/internal.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/utf16.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/encodings/utf7.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/lib/extend-node.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/lib/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/lib/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/lib/streams.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/iconv-lite/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/inherits/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/inherits/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/inherits/inherits.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/inherits/inherits_browser.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/inherits/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ipaddr.js/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-extglob/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-extglob/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-extglob/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-extglob/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-glob/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-glob/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-glob/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-glob/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-number/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-number/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-number/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-number/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-plain-obj/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-plain-obj/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-plain-obj/license create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-plain-obj/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/is-plain-obj/readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/media-typer/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/media-typer/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/media-typer/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/media-typer/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/media-typer/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/merge-descriptors/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/merge-descriptors/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/merge-descriptors/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/merge-descriptors/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/merge-descriptors/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/methods/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/methods/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/methods/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/methods/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/methods/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/micromatch/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/micromatch/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/micromatch/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/micromatch/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/db.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-db/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-types/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-types/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-types/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-types/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime-types/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/cli.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/mime.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/src/build.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/src/test.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/mime/types.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ms/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ms/license.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ms/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/ms/readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/lib/charset.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/lib/encoding.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/lib/language.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/lib/mediaType.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/negotiator/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-assign/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-assign/license create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-assign/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-assign/readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/example/all.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/example/circular.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/example/fn.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/example/inspect.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/package-support.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/readme.markdown create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test-core-js.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/bigint.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/browser/dom.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/circular.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/deep.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/element.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/err.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/fakes.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/fn.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/has.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/holes.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/indent-option.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/inspect.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/lowbyte.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/number.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/quoteStyle.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/toStringTag.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/undef.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/test/values.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/object-inspect/util.inspect.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/on-finished/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/on-finished/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/on-finished/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/on-finished/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/on-finished/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/parseurl/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/parseurl/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/parseurl/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/parseurl/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/parseurl/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/path-to-regexp/History.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/path-to-regexp/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/path-to-regexp/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/path-to-regexp/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/path-to-regexp/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/lib/constants.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/lib/parse.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/lib/picomatch.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/lib/scan.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/lib/utils.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/picomatch/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/proxy-addr/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/proxy-addr/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/proxy-addr/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/proxy-addr/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/proxy-addr/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/.editorconfig create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/LICENSE.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/dist/qs.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/lib/formats.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/lib/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/lib/parse.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/lib/stringify.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/lib/utils.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/test/parse.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/test/stringify.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/qs/test/utils.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/range-parser/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/range-parser/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/range-parser/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/range-parser/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/range-parser/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/SECURITY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/raw-body/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/.travis.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/requires-port/test.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safe-buffer/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safe-buffer/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safe-buffer/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safe-buffer/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safe-buffer/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/Readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/dangerous.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/safer.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/safer-buffer/tests.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/SECURITY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/node_modules/ms/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/node_modules/ms/license.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/node_modules/ms/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/node_modules/ms/readme.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/send/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/serve-static/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/serve-static/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/serve-static/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/serve-static/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/serve-static/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/index.d.ts create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/setprototypeof/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/.eslintignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/.eslintrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/.nycrc create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/side-channel/test/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/codes.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/statuses/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/to-regex-range/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/to-regex-range/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/to-regex-range/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/to-regex-range/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/toidentifier/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/toidentifier/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/toidentifier/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/toidentifier/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/toidentifier/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/type-is/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/type-is/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/type-is/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/type-is/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/type-is/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/unpipe/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/unpipe/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/unpipe/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/unpipe/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/unpipe/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/utils-merge/.npmignore create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/utils-merge/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/utils-merge/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/utils-merge/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/utils-merge/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/vary/HISTORY.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/vary/LICENSE create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/vary/README.md create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/vary/index.js create mode 100644 Murach/book_apps/ch15/cors_proxy/node_modules/vary/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/package-lock.json create mode 100644 Murach/book_apps/ch15/cors_proxy/package.json create mode 100644 Murach/book_apps/ch15/cors_proxy/proxy.mjs create mode 100644 Murach/book_apps/ch15/email_list/email_list.txt create mode 100644 Murach/book_apps/ch15/email_list/read.js create mode 100644 Murach/book_apps/ch15/email_list/read.mjs create mode 100644 Murach/book_apps/ch15/email_list/read_write_promises.mjs create mode 100644 Murach/book_apps/ch15/email_list_api/data.js create mode 100644 Murach/book_apps/ch15/email_list_api/email_list.txt create mode 100644 Murach/book_apps/ch15/email_list_api/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/.bin/mime create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/.bin/mime.cmd create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/.bin/mime.ps1 create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/.package-lock.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/accepts/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/accepts/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/accepts/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/accepts/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/accepts/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/array-flatten/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/array-flatten/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/array-flatten/array-flatten.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/array-flatten/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/SECURITY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/lib/read.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/lib/types/json.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/lib/types/raw.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/lib/types/text.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/body-parser/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/bytes/History.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/bytes/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/bytes/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/bytes/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/bytes/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/.eslintignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/callBound.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/test/callBound.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/call-bind/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-disposition/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-disposition/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-disposition/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-disposition/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-disposition/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-type/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-type/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-type/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-type/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/content-type/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie-signature/.npmignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie-signature/History.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie-signature/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie-signature/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie-signature/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/SECURITY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cookie/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/CONTRIBUTING.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/lib/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/cors/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/.coveralls.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/.npmignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/.travis.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/Makefile create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/component.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/karma.conf.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/node.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/src/browser.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/src/debug.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/src/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/src/inspector-log.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/debug/src/node.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/History.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/lib/browser/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/depd/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/destroy/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/destroy/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/destroy/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/destroy/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ee-first/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ee-first/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ee-first/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ee-first/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/encodeurl/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/encodeurl/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/encodeurl/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/encodeurl/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/encodeurl/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/escape-html/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/escape-html/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/escape-html/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/escape-html/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/etag/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/etag/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/etag/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/etag/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/etag/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/History.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/application.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/express.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/middleware/init.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/middleware/query.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/request.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/response.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/router/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/router/layer.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/router/route.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/utils.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/lib/view.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/express/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/SECURITY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/finalhandler/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/forwarded/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/forwarded/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/forwarded/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/forwarded/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/forwarded/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/fresh/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/fresh/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/fresh/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/fresh/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/fresh/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/.editorconfig create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/.jscs.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/.npmignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/.travis.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/implementation.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/test/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/function-bind/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-proto/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/shams.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/test/shams/core-js.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has-symbols/test/tests.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has/LICENSE-MIT create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has/src/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/has/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/http-errors/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/http-errors/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/http-errors/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/http-errors/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/http-errors/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/Changelog.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/internal.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/utf16.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/encodings/utf7.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/lib/extend-node.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/lib/index.d.ts create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/lib/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/lib/streams.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/iconv-lite/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/inherits/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/inherits/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/inherits/inherits.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/inherits/inherits_browser.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/inherits/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ipaddr.js/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/media-typer/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/media-typer/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/media-typer/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/media-typer/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/media-typer/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/merge-descriptors/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/merge-descriptors/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/merge-descriptors/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/merge-descriptors/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/merge-descriptors/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/methods/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/methods/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/methods/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/methods/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/methods/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/db.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-db/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-types/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-types/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-types/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-types/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime-types/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/.npmignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/cli.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/mime.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/src/build.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/src/test.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/mime/types.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ms/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ms/license.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ms/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/ms/readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/lib/charset.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/lib/encoding.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/lib/language.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/lib/mediaType.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/negotiator/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-assign/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-assign/license create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-assign/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-assign/readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/example/all.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/example/circular.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/example/fn.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/example/inspect.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/package-support.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/readme.markdown create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test-core-js.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/bigint.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/browser/dom.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/circular.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/deep.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/element.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/err.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/fakes.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/fn.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/has.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/holes.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/indent-option.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/inspect.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/lowbyte.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/number.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/quoteStyle.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/toStringTag.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/undef.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/test/values.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/object-inspect/util.inspect.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/on-finished/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/on-finished/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/on-finished/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/on-finished/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/on-finished/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/parseurl/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/parseurl/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/parseurl/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/parseurl/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/parseurl/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/path-to-regexp/History.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/path-to-regexp/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/path-to-regexp/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/path-to-regexp/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/path-to-regexp/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/proxy-addr/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/proxy-addr/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/proxy-addr/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/proxy-addr/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/proxy-addr/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/.editorconfig create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/LICENSE.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/dist/qs.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/lib/formats.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/lib/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/lib/parse.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/lib/stringify.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/lib/utils.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/test/parse.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/test/stringify.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/qs/test/utils.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/range-parser/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/range-parser/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/range-parser/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/range-parser/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/range-parser/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/SECURITY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/index.d.ts create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/raw-body/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safe-buffer/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safe-buffer/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safe-buffer/index.d.ts create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safe-buffer/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safe-buffer/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/Readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/dangerous.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/safer.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/safer-buffer/tests.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/SECURITY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/node_modules/ms/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/node_modules/ms/license.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/node_modules/ms/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/node_modules/ms/readme.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/send/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/serve-static/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/serve-static/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/serve-static/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/serve-static/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/serve-static/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/index.d.ts create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/setprototypeof/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/.eslintignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/.eslintrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/.github/FUNDING.yml create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/.nycrc create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/CHANGELOG.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/side-channel/test/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/codes.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/statuses/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/toidentifier/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/toidentifier/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/toidentifier/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/toidentifier/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/toidentifier/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/type-is/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/type-is/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/type-is/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/type-is/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/type-is/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/unpipe/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/unpipe/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/unpipe/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/unpipe/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/unpipe/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/utils-merge/.npmignore create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/utils-merge/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/utils-merge/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/utils-merge/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/utils-merge/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/vary/HISTORY.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/vary/LICENSE create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/vary/README.md create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/vary/index.js create mode 100644 Murach/book_apps/ch15/email_list_api/node_modules/vary/package.json create mode 100644 Murach/book_apps/ch15/email_list_api/package-lock.json create mode 100644 Murach/book_apps/ch15/email_list_api/package.json create mode 100644 Murach/book_apps/ch15/email_manager/email_manager.js create mode 100644 Murach/book_apps/ch15/email_manager/index.html create mode 100644 Murach/book_apps/ch15/email_manager/main.css create mode 100644 Murach/book_apps/ch15/future_value/index.js create mode 100644 Murach/book_apps/ch15/future_value/index2.js create mode 100644 Murach/book_apps/ch15/future_value/index3.mjs create mode 100644 Murach/book_apps/ch15/future_value/murach-calc-future-value.mjs create mode 100644 Murach/book_apps/ch15/future_value/package.json create mode 100644 Murach/book_apps/ch16/drawing/drawing.js create mode 100644 Murach/book_apps/ch16/drawing/index.html create mode 100644 Murach/book_apps/ch16/drawing/main.css create mode 100644 Murach/book_apps/ch16/movie_list/index.html create mode 100644 Murach/book_apps/ch16/movie_list/main.css create mode 100644 Murach/book_apps/ch16/movie_list/movie_list.js create mode 100644 Murach/book_apps/ch16/movie_list/pizza_order.js create mode 100644 Murach/book_apps/ch16/pong/index.html create mode 100644 Murach/book_apps/ch16/pong/main.css create mode 100644 Murach/book_apps/ch16/pong/pong.js create mode 100644 Murach/book_apps/ch16/smiley/index.html create mode 100644 Murach/book_apps/ch16/smiley/main.css create mode 100644 Murach/book_apps/ch16/smiley/smiley.js create mode 100644 Murach/book_apps/ch16/tic_tac_toe/index.html create mode 100644 Murach/book_apps/ch16/tic_tac_toe/main.css create mode 100644 Murach/book_apps/ch16/tic_tac_toe/tic_tac_toe.js create mode 100644 Murach/exercises/ch01/die_roller/index.html create mode 100644 Murach/exercises/ch01/die_roller/main.css create mode 100644 Murach/exercises/ch02/numbers/index.html create mode 100644 Murach/exercises/ch02/scripts/index.html create mode 100644 Murach/exercises/ch02/strings/index.html create mode 100644 Murach/exercises/ch03/coin_flip/index.html create mode 100644 Murach/exercises/ch03/guess_number/guess_number.js create mode 100644 Murach/exercises/ch03/guess_number/index.html create mode 100644 Murach/exercises/ch03/stairs/index.html create mode 100644 Murach/exercises/ch04/countries/index.html create mode 100644 Murach/exercises/ch04/prices/index.html create mode 100644 Murach/exercises/ch04/words/index.html create mode 100644 Murach/exercises/ch05/dice_roller/index.html create mode 100644 Murach/exercises/ch05/dice_roller_dom/dice_roller.js create mode 100644 Murach/exercises/ch05/dice_roller_dom/index.html create mode 100644 Murach/exercises/ch05/dice_roller_dom/main.css create mode 100644 Murach/exercises/ch05/movie_list/index.html create mode 100644 Murach/exercises/ch05/movie_list/main.css create mode 100644 Murach/exercises/ch05/movie_list/movie.js create mode 100644 Murach/exercises/ch06/image_carousel/carousel.css create mode 100644 Murach/exercises/ch06/image_carousel/carousel.js create mode 100644 Murach/exercises/ch06/image_carousel/images/bison.jpg create mode 100644 Murach/exercises/ch06/image_carousel/images/deer.jpg create mode 100644 Murach/exercises/ch06/image_carousel/images/hero.jpg create mode 100644 Murach/exercises/ch06/image_carousel/images/release.jpg create mode 100644 Murach/exercises/ch06/image_carousel/index.html create mode 100644 Murach/exercises/ch06/movie_ranker/index.html create mode 100644 Murach/exercises/ch06/movie_ranker/mover.css create mode 100644 Murach/exercises/ch06/movie_ranker/mover.js create mode 100644 Murach/exercises/ch06/register_3.0/confirm.html create mode 100644 Murach/exercises/ch06/register_3.0/index.html create mode 100644 Murach/exercises/ch06/register_3.0/register.css create mode 100644 Murach/exercises/ch06/register_3.0/register.js create mode 100644 Murach/exercises/ch07/future_value/future_value.css create mode 100644 Murach/exercises/ch07/future_value/future_value.js create mode 100644 Murach/exercises/ch07/future_value/index.html create mode 100644 Murach/exercises/ch07/movie_ranker/index.html create mode 100644 Murach/exercises/ch07/movie_ranker/mover.css create mode 100644 Murach/exercises/ch07/movie_ranker/mover.js create mode 100644 Murach/exercises/ch08/invoices/index.html create mode 100644 Murach/exercises/ch08/invoices/invoices.css create mode 100644 Murach/exercises/ch08/invoices/invoices.js create mode 100644 Murach/exercises/ch08/stopwatch/index.html create mode 100644 Murach/exercises/ch08/stopwatch/main.css create mode 100644 Murach/exercises/ch08/stopwatch/stopwatch.js create mode 100644 Murach/exercises/ch09/creditcard/confirm.html create mode 100644 Murach/exercises/ch09/creditcard/creditcard.css create mode 100644 Murach/exercises/ch09/creditcard/creditcard.js create mode 100644 Murach/exercises/ch09/creditcard/index.html create mode 100644 Murach/exercises/ch09/exceptions/guess.js create mode 100644 Murach/exercises/ch09/exceptions/index.html create mode 100644 Murach/exercises/ch09/exceptions/main.css create mode 100644 Murach/exercises/ch10/countdown/count_down.css create mode 100644 Murach/exercises/ch10/countdown/count_down.js create mode 100644 Murach/exercises/ch10/countdown/index.html create mode 100644 Murach/exercises/ch11/cart/cart.css create mode 100644 Murach/exercises/ch11/cart/cart.js create mode 100644 Murach/exercises/ch11/cart/index.html create mode 100644 Murach/exercises/ch11/invoices/index.html create mode 100644 Murach/exercises/ch11/invoices/invoices.css create mode 100644 Murach/exercises/ch11/invoices/invoices.js create mode 100644 Murach/exercises/ch12/count_down/count_down.css create mode 100644 Murach/exercises/ch12/count_down/count_down.js create mode 100644 Murach/exercises/ch12/count_down/index.html create mode 100644 Murach/exercises/ch12/test_scores/index.html create mode 100644 Murach/exercises/ch12/test_scores/test_scores.css create mode 100644 Murach/exercises/ch12/test_scores/test_scores.js create mode 100644 Murach/exercises/ch13/count_down/count_down.css create mode 100644 Murach/exercises/ch13/count_down/count_down.js create mode 100644 Murach/exercises/ch13/count_down/index.html create mode 100644 Murach/exercises/ch13/count_down/lib_event.js create mode 100644 Murach/exercises/ch13/trips/index.html create mode 100644 Murach/exercises/ch13/trips/lib_trip.js create mode 100644 Murach/exercises/ch13/trips/lib_trips.js create mode 100644 Murach/exercises/ch13/trips/trips.css create mode 100644 Murach/exercises/ch13/trips/trips.js create mode 100644 Murach/exercises/ch14/apod/apod.css create mode 100644 Murach/exercises/ch14/apod/apod.js create mode 100644 Murach/exercises/ch14/apod/images/notavailable.png create mode 100644 Murach/exercises/ch14/apod/index.html create mode 100644 Murach/exercises/ch14/email_manager/email_manager.js create mode 100644 Murach/exercises/ch14/email_manager/index.html create mode 100644 Murach/exercises/ch14/email_manager/main.css create mode 100644 Murach/exercises/ch15/fs/names.txt create mode 100644 Murach/exercises/ch15/fs/read.mjs create mode 100644 Murach/exercises/ch15/task_list/index.html create mode 100644 Murach/exercises/ch15/task_list/task_list.css create mode 100644 Murach/exercises/ch15/task_list/task_list.js create mode 100644 Murach/exercises/ch15/task_list_api/data.mjs create mode 100644 Murach/exercises/ch15/task_list_api/index.mjs create mode 100644 Murach/exercises/ch15/task_list_api/tasks.txt create mode 100644 Murach/exercises/ch15/test_scores/index.js create mode 100644 Murach/exercises/ch16/logo/index.html create mode 100644 Murach/exercises/ch16/logo/logo.js create mode 100644 Murach/exercises/ch16/logo/logo.png create mode 100644 Murach/exercises/ch16/logo/main.css create mode 100644 Murach/exercises/ch16/pizza_order/index.html create mode 100644 Murach/exercises/ch16/pizza_order/logo.png create mode 100644 Murach/exercises/ch16/pizza_order/main.css create mode 100644 Murach/exercises/ch16/pizza_order/pizza_order.js create mode 100644 Murach/exercises/ch16/screen_saver/index.html create mode 100644 Murach/exercises/ch16/screen_saver/main.css create mode 100644 Murach/exercises/ch16/screen_saver/screen_saver.js create mode 100644 Murach/solutions/ch01/die_roller/index.html create mode 100644 Murach/solutions/ch01/die_roller/main.css create mode 100644 Murach/solutions/ch01/welcome/index.html create mode 100644 Murach/solutions/ch01/welcome/main.css create mode 100644 Murach/solutions/ch02/numbers/index.html create mode 100644 Murach/solutions/ch02/scripts/index.html create mode 100644 Murach/solutions/ch02/strings/index.html create mode 100644 Murach/solutions/ch03/coin_flip/index.html create mode 100644 Murach/solutions/ch03/guess_number/guess_number.js create mode 100644 Murach/solutions/ch03/guess_number/index.html create mode 100644 Murach/solutions/ch03/stairs/index.html create mode 100644 Murach/solutions/ch04/countries/index.html create mode 100644 Murach/solutions/ch04/prices/index.html create mode 100644 Murach/solutions/ch04/words/index.html create mode 100644 Murach/solutions/ch05/dice_roller/index.html create mode 100644 Murach/solutions/ch05/dice_roller_dom/dice_roller.js create mode 100644 Murach/solutions/ch05/dice_roller_dom/index.html create mode 100644 Murach/solutions/ch05/dice_roller_dom/main.css create mode 100644 Murach/solutions/ch05/movie_list/index.html create mode 100644 Murach/solutions/ch05/movie_list/main.css create mode 100644 Murach/solutions/ch05/movie_list/movie.js create mode 100644 Murach/solutions/ch06/image_carousel/carousel.css create mode 100644 Murach/solutions/ch06/image_carousel/carousel.js create mode 100644 Murach/solutions/ch06/image_carousel/images/bison.jpg create mode 100644 Murach/solutions/ch06/image_carousel/images/deer.jpg create mode 100644 Murach/solutions/ch06/image_carousel/images/hero.jpg create mode 100644 Murach/solutions/ch06/image_carousel/images/release.jpg create mode 100644 Murach/solutions/ch06/image_carousel/index.html create mode 100644 Murach/solutions/ch06/movie_ranker/index.html create mode 100644 Murach/solutions/ch06/movie_ranker/mover.css create mode 100644 Murach/solutions/ch06/movie_ranker/mover.js create mode 100644 Murach/solutions/ch06/register_3.0/confirm.html create mode 100644 Murach/solutions/ch06/register_3.0/index.html create mode 100644 Murach/solutions/ch06/register_3.0/register.css create mode 100644 Murach/solutions/ch06/register_3.0/register.js create mode 100644 Murach/solutions/ch07/future_value/future_value.css create mode 100644 Murach/solutions/ch07/future_value/future_value.js create mode 100644 Murach/solutions/ch07/future_value/index.html create mode 100644 Murach/solutions/ch07/future_value/test_plan.txt create mode 100644 Murach/solutions/ch07/movie_ranker/index.html create mode 100644 Murach/solutions/ch07/movie_ranker/mover.css create mode 100644 Murach/solutions/ch07/movie_ranker/mover.js create mode 100644 Murach/solutions/ch08/invoices/index.html create mode 100644 Murach/solutions/ch08/invoices/invoices.css create mode 100644 Murach/solutions/ch08/invoices/invoices.js create mode 100644 Murach/solutions/ch08/stopwatch/index.html create mode 100644 Murach/solutions/ch08/stopwatch/main.css create mode 100644 Murach/solutions/ch08/stopwatch/stopwatch.js create mode 100644 Murach/solutions/ch09/creditcard/confirm.html create mode 100644 Murach/solutions/ch09/creditcard/creditcard.css create mode 100644 Murach/solutions/ch09/creditcard/creditcard.js create mode 100644 Murach/solutions/ch09/creditcard/index.html create mode 100644 Murach/solutions/ch09/exceptions/guess.js create mode 100644 Murach/solutions/ch09/exceptions/index.html create mode 100644 Murach/solutions/ch09/exceptions/main.css create mode 100644 Murach/solutions/ch10/countdown/count_down.css create mode 100644 Murach/solutions/ch10/countdown/count_down.js create mode 100644 Murach/solutions/ch10/countdown/index.html create mode 100644 Murach/solutions/ch11/cart/cart.css create mode 100644 Murach/solutions/ch11/cart/cart.js create mode 100644 Murach/solutions/ch11/cart/index.html create mode 100644 Murach/solutions/ch11/invoices/index.html create mode 100644 Murach/solutions/ch11/invoices/invoices.css create mode 100644 Murach/solutions/ch11/invoices/invoices.js create mode 100644 Murach/solutions/ch12/count_down/count_down.css create mode 100644 Murach/solutions/ch12/count_down/count_down.js create mode 100644 Murach/solutions/ch12/count_down/index.html create mode 100644 Murach/solutions/ch12/count_down/lib_event.js create mode 100644 Murach/solutions/ch12/test_scores/index.html create mode 100644 Murach/solutions/ch12/test_scores/lib_test_scores.js create mode 100644 Murach/solutions/ch12/test_scores/lib_validation.js create mode 100644 Murach/solutions/ch12/test_scores/test_scores.css create mode 100644 Murach/solutions/ch12/test_scores/test_scores.js create mode 100644 Murach/solutions/ch13/count_down/count_down.css create mode 100644 Murach/solutions/ch13/count_down/count_down.js create mode 100644 Murach/solutions/ch13/count_down/index.html create mode 100644 Murach/solutions/ch13/count_down/lib_event.js create mode 100644 Murach/solutions/ch13/trips/index.html create mode 100644 Murach/solutions/ch13/trips/lib_trip.js create mode 100644 Murach/solutions/ch13/trips/lib_trips.js create mode 100644 Murach/solutions/ch13/trips/lib_validation.js create mode 100644 Murach/solutions/ch13/trips/trips.css create mode 100644 Murach/solutions/ch13/trips/trips.js create mode 100644 Murach/solutions/ch14/apod/apod.css create mode 100644 Murach/solutions/ch14/apod/apod.js create mode 100644 Murach/solutions/ch14/apod/images/notavailable.png create mode 100644 Murach/solutions/ch14/apod/index.html create mode 100644 Murach/solutions/ch14/apod/lib_apod.js create mode 100644 Murach/solutions/ch14/email_manager/email_manager.js create mode 100644 Murach/solutions/ch14/email_manager/index.html create mode 100644 Murach/solutions/ch14/email_manager/main.css create mode 100644 Murach/solutions/ch15/fs/names.txt create mode 100644 Murach/solutions/ch15/fs/read.mjs create mode 100644 Murach/solutions/ch15/task_list/index.html create mode 100644 Murach/solutions/ch15/task_list/task_list.css create mode 100644 Murach/solutions/ch15/task_list/task_list.js create mode 100644 Murach/solutions/ch15/task_list_api/data.mjs create mode 100644 Murach/solutions/ch15/task_list_api/index.mjs create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/.bin/mime create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/.bin/mime.cmd create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/.bin/mime.ps1 create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/.package-lock.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/accepts/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/accepts/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/accepts/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/accepts/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/accepts/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/array-flatten/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/array-flatten/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/array-flatten/array-flatten.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/array-flatten/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/lib/read.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/lib/types/json.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/lib/types/raw.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/lib/types/text.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/body-parser/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/bytes/History.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/bytes/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/bytes/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/bytes/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/bytes/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/.eslintignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/callBound.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/test/callBound.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/call-bind/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-disposition/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-disposition/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-disposition/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-disposition/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-disposition/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-type/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-type/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-type/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-type/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/content-type/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie-signature/.npmignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie-signature/History.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie-signature/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie-signature/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie-signature/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cookie/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/CONTRIBUTING.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/lib/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/cors/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/.coveralls.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/.npmignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/.travis.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/Makefile create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/component.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/karma.conf.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/node.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/src/browser.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/src/debug.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/src/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/src/inspector-log.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/debug/src/node.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/index.d.ts.map create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/define-data-property/tsconfig.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/History.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/lib/browser/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/depd/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/destroy/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/destroy/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/destroy/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/destroy/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ee-first/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ee-first/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ee-first/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ee-first/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/encodeurl/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/encodeurl/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/encodeurl/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/encodeurl/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/encodeurl/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/escape-html/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/escape-html/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/escape-html/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/escape-html/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/etag/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/etag/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/etag/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/etag/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/etag/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/History.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/application.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/express.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/middleware/init.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/middleware/query.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/request.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/response.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/router/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/router/layer.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/router/route.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/utils.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/lib/view.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/express/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/finalhandler/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/forwarded/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/forwarded/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/forwarded/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/forwarded/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/forwarded/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/fresh/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/fresh/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/fresh/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/fresh/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/fresh/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/.github/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/implementation.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/test/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/function-bind/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/gopd/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-property-descriptors/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-proto/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/shams.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/test/shams/core-js.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/has-symbols/test/tests.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/index.d.ts.map create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/hasown/tsconfig.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/http-errors/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/http-errors/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/http-errors/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/http-errors/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/http-errors/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/Changelog.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/internal.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/utf16.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/encodings/utf7.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/lib/extend-node.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/lib/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/lib/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/lib/streams.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/iconv-lite/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/inherits/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/inherits/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/inherits/inherits.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/inherits/inherits_browser.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/inherits/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ipaddr.js/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/media-typer/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/media-typer/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/media-typer/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/media-typer/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/media-typer/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/merge-descriptors/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/merge-descriptors/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/merge-descriptors/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/merge-descriptors/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/merge-descriptors/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/methods/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/methods/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/methods/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/methods/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/methods/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/db.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-db/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-types/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-types/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-types/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-types/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime-types/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/.npmignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/cli.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/mime.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/src/build.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/src/test.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/mime/types.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ms/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ms/license.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ms/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/ms/readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/lib/charset.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/lib/encoding.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/lib/language.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/lib/mediaType.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/negotiator/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-assign/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-assign/license create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-assign/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-assign/readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/example/all.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/example/circular.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/example/fn.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/example/inspect.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/package-support.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/readme.markdown create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test-core-js.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/bigint.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/browser/dom.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/circular.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/deep.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/element.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/err.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/fakes.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/fn.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/global.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/has.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/holes.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/indent-option.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/inspect.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/lowbyte.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/number.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/quoteStyle.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/toStringTag.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/undef.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/test/values.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/object-inspect/util.inspect.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/on-finished/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/on-finished/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/on-finished/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/on-finished/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/on-finished/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/parseurl/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/parseurl/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/parseurl/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/parseurl/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/parseurl/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/path-to-regexp/History.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/path-to-regexp/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/path-to-regexp/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/path-to-regexp/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/path-to-regexp/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/proxy-addr/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/proxy-addr/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/proxy-addr/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/proxy-addr/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/proxy-addr/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/.editorconfig create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/LICENSE.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/dist/qs.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/lib/formats.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/lib/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/lib/parse.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/lib/stringify.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/lib/utils.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/test/parse.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/test/stringify.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/qs/test/utils.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/range-parser/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/range-parser/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/range-parser/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/range-parser/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/range-parser/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/raw-body/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safe-buffer/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safe-buffer/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safe-buffer/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safe-buffer/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safe-buffer/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/Readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/dangerous.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/safer.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/safer-buffer/tests.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/SECURITY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/node_modules/ms/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/node_modules/ms/license.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/node_modules/ms/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/node_modules/ms/readme.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/send/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/serve-static/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/serve-static/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/serve-static/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/serve-static/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/serve-static/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/env.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/set-function-length/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/index.d.ts create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/setprototypeof/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/.eslintignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/.eslintrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/.github/FUNDING.yml create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/.nycrc create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/CHANGELOG.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/side-channel/test/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/codes.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/statuses/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/toidentifier/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/toidentifier/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/toidentifier/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/toidentifier/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/toidentifier/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/type-is/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/type-is/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/type-is/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/type-is/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/type-is/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/unpipe/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/unpipe/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/unpipe/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/unpipe/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/unpipe/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/utils-merge/.npmignore create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/utils-merge/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/utils-merge/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/utils-merge/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/utils-merge/package.json create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/vary/HISTORY.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/vary/LICENSE create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/vary/README.md create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/vary/index.js create mode 100644 Murach/solutions/ch15/task_list_api/node_modules/vary/package.json create mode 100644 Murach/solutions/ch15/task_list_api/package.json create mode 100644 Murach/solutions/ch15/task_list_api/tasks.txt create mode 100644 Murach/solutions/ch15/test_scores/index.js create mode 100644 Murach/solutions/ch16/logo/index.html create mode 100644 Murach/solutions/ch16/logo/logo.js create mode 100644 Murach/solutions/ch16/logo/logo.png create mode 100644 Murach/solutions/ch16/logo/main.css create mode 100644 Murach/solutions/ch16/pizza_order/index.html create mode 100644 Murach/solutions/ch16/pizza_order/logo.png create mode 100644 Murach/solutions/ch16/pizza_order/main.css create mode 100644 Murach/solutions/ch16/pizza_order/pizza_order.js create mode 100644 Murach/solutions/ch16/screen_saver/index.html create mode 100644 Murach/solutions/ch16/screen_saver/main.css create mode 100644 Murach/solutions/ch16/screen_saver/screen_saver.js diff --git a/Murach/.DS_Store b/Murach/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..122ed3dec34709d81672a3effbf68da9f0d89b86 GIT binary patch literal 6148 zcmeHKyKVwO3>*gv5DjI@{e}F&3Xw11144ilQBJui7bME-`0b1zi4GlUQzZ7up2h3g z)lG560AzJM+yP4fGrA(q8pfvk>La^}%!DX*#sePl#-}@Uqw4Dk<<7A~%jX3H{=V6@ zZKI?)o^YbSV~=NaT=Dqfc1Lc5BR;s@;`MU-`n8!&1yX@jAQeaj{;dM+*=nX{y|&P|^e + + + Die Roller + + + +

+ +

+

Click Reload to roll again!

+ + \ No newline at end of file diff --git a/Murach/book_apps/ch01/die_roller/main.css b/Murach/book_apps/ch01/die_roller/main.css new file mode 100644 index 0000000..3684cc6 --- /dev/null +++ b/Murach/book_apps/ch01/die_roller/main.css @@ -0,0 +1,12 @@ +body { + font-family: Arial, Helvetica, sans-serif; + background-color: white; + margin: 1em auto; + width: 600px; + padding: 0 2em 0; + border: 1px solid black; + border-radius: 1em; +} +h1 { + color: cornflowerblue; +} diff --git a/Murach/book_apps/ch01/email_list/add.html b/Murach/book_apps/ch01/email_list/add.html new file mode 100644 index 0000000..44c079e --- /dev/null +++ b/Murach/book_apps/ch01/email_list/add.html @@ -0,0 +1,12 @@ + + + + + + Join Email List + + + +

Thanks for joining our email list!

+ + diff --git a/Murach/book_apps/ch01/email_list/email_list.js b/Murach/book_apps/ch01/email_list/email_list.js new file mode 100644 index 0000000..38742da --- /dev/null +++ b/Murach/book_apps/ch01/email_list/email_list.js @@ -0,0 +1,40 @@ +"use strict"; + +// define a function that gets an HTML element +function getElement(selector) { + return document.querySelector(selector); +} + +// define a function that handles the click event of the Join button +function joinButtonClick(event) { + // get user entries from text boxes + const email1 = getElement("#email_1").value; + const email2 = getElement("#email_2").value; + + // check user entries + let invalid = false; + if (email1 == "") { + getElement("#email_1_error").textContent = "Email is required."; + invalid = true; + } else { + getElement("#email_1_error").textContent = ""; + } + + if (email1 != email2) { + getElement("#email_2_error").textContent = "Emails must match."; + invalid = true; + } else { + getElement("#email_2_error").textContent = ""; + } + + // cancel form submit if any user entries are invalid + if (invalid) { + event.preventDefault(); + } +}; + +// add code that's run when the web page is loaded +document.addEventListener("DOMContentLoaded", () => { + // specify the function that's run when the Join button is clicked + getElement("#join_button").addEventListener("click", joinButtonClick); +}); \ No newline at end of file diff --git a/Murach/book_apps/ch01/email_list/index.html b/Murach/book_apps/ch01/email_list/index.html new file mode 100644 index 0000000..d3f5afd --- /dev/null +++ b/Murach/book_apps/ch01/email_list/index.html @@ -0,0 +1,32 @@ + + + + + + Email List + + + +

Email List

+
+
+ + + * +
+ +
+ + + * +
+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/Murach/book_apps/ch01/email_list/main.css b/Murach/book_apps/ch01/email_list/main.css new file mode 100644 index 0000000..11a8d7e --- /dev/null +++ b/Murach/book_apps/ch01/email_list/main.css @@ -0,0 +1,26 @@ +body { + font-family: Arial, Helvetica, sans-serif; + margin: 1em auto; + width: 600px; + padding: 0 2em 0; + border: 1px solid black; + border-radius: 1em; +} +h1 { + color: cornflowerblue; +} +div { + margin-bottom: 1em; +} +label { + display: inline-block; + width: 11em; + text-align: right; +} +input { + margin-left: 1em; + margin-right: 0.5em; +} +span { + color: red; +} \ No newline at end of file diff --git a/Murach/book_apps/ch01/welcome/index.html b/Murach/book_apps/ch01/welcome/index.html new file mode 100644 index 0000000..09ceac0 --- /dev/null +++ b/Murach/book_apps/ch01/welcome/index.html @@ -0,0 +1,13 @@ + + + + Welcome + + +

Welcome to Modern JavaScript

+ + + \ No newline at end of file diff --git a/Murach/book_apps/ch01/welcome/main.css b/Murach/book_apps/ch01/welcome/main.css new file mode 100644 index 0000000..b0eca86 --- /dev/null +++ b/Murach/book_apps/ch01/welcome/main.css @@ -0,0 +1,11 @@ +body { + font-family: Arial, Helvetica, sans-serif; + margin: 0 auto; + padding: 0 2em 1em; + width: 600px; + border: 1px solid black; + border-radius: 1em; +} +h1 { + color: cornflowerblue; +} diff --git a/Murach/book_apps/ch02/miles_to_kms/index.html b/Murach/book_apps/ch02/miles_to_kms/index.html new file mode 100644 index 0000000..6c3074a --- /dev/null +++ b/Murach/book_apps/ch02/miles_to_kms/index.html @@ -0,0 +1,9 @@ + + + + Miles to Kilometers + + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch02/miles_to_kms/miles_to_kms.js b/Murach/book_apps/ch02/miles_to_kms/miles_to_kms.js new file mode 100644 index 0000000..5e02e39 --- /dev/null +++ b/Murach/book_apps/ch02/miles_to_kms/miles_to_kms.js @@ -0,0 +1,13 @@ +"use strict"; + +// get miles from user +const miles = parseFloat(prompt("Miles:", 120)); + +// calculate kilometers +const kilometers = miles * 1.60934; + +// display results +const results = "Miles: " + miles + "\n" + + "Kilometers: " + kilometers.toFixed(2); + +alert(results); \ No newline at end of file diff --git a/Murach/book_apps/ch02/test_scores/index.html b/Murach/book_apps/ch02/test_scores/index.html new file mode 100644 index 0000000..04c69a5 --- /dev/null +++ b/Murach/book_apps/ch02/test_scores/index.html @@ -0,0 +1,9 @@ + + + + Test Scores + + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch02/test_scores/test_scores.js b/Murach/book_apps/ch02/test_scores/test_scores.js new file mode 100644 index 0000000..a06442f --- /dev/null +++ b/Murach/book_apps/ch02/test_scores/test_scores.js @@ -0,0 +1,25 @@ +"use strict"; + +// initialize total variable +let total = 0; + +//get 3 scores from user and add them together +const score1 = parseInt(prompt("Enter first test score")); +total += score1; + +const score2 = parseInt(prompt("Enter second test score")); +total += score2; + +const score3 = parseInt(prompt("Enter third test score")); +total += score3; + +//calculate the average +const average = Math.round(total/3); + +// display the scores +const result = "Score 1 = " + score1 + "\n" + + "Score 2 = " + score2 + "\n" + + "Score 3 = " + score3 + "\n" + + "Average score = " + average; + +alert(result); \ No newline at end of file diff --git a/Murach/book_apps/ch03/future_value/future_value.js b/Murach/book_apps/ch03/future_value/future_value.js new file mode 100644 index 0000000..7b6227f --- /dev/null +++ b/Murach/book_apps/ch03/future_value/future_value.js @@ -0,0 +1,32 @@ +"use strict"; + +// get investment amount - loop until user enters a number +let investment = NaN; +while (isNaN(investment)) { + investment = parseFloat( + prompt("Enter investment amount", 10000)); +} + +// get interest rate - loop until user enters a number +let rate = NaN; +while (isNaN(rate)) { + rate = parseFloat(prompt("Enter interest rate", 4.5)); +} + +// get number of years - loop until user enters a number +let years = NaN; +while (isNaN(years)) { + years = parseInt(prompt("Enter years", 10)); +} + +// calulate future value +let futureValue = investment; +for (let i = 0; i < years; i++) { + futureValue += futureValue * rate / 100; +} + +// display results +alert("Investment amount: $" + investment + "\n" + + "Interest rate: " + rate + "%\n" + + "Years: " + years + "\n" + + "Future Value: $" + futureValue.toFixed(2)); \ No newline at end of file diff --git a/Murach/book_apps/ch03/future_value/index.html b/Murach/book_apps/ch03/future_value/index.html new file mode 100644 index 0000000..8bbfa68 --- /dev/null +++ b/Murach/book_apps/ch03/future_value/index.html @@ -0,0 +1,11 @@ + + + + + + Future Value Calculator + + + + + diff --git a/Murach/book_apps/ch03/guess_number/guess_number.js b/Murach/book_apps/ch03/guess_number/guess_number.js new file mode 100644 index 0000000..ea62cea --- /dev/null +++ b/Murach/book_apps/ch03/guess_number/guess_number.js @@ -0,0 +1,35 @@ +"use strict"; + +// get a random number between 1 and 20 +const num = Math.ceil(Math.random() * 20); + +// get the computer's guess +const computerGuess = Math.ceil(Math.random() * 20); + +// get the user's guess +const userGuess = parseInt(prompt("Enter a number between 1 and 20")); + +if (isNaN(userGuess)) { + alert("Not a valid number. Computer wins.") +} else if (userGuess < 1 || userGuess > 20) { + alert("Not a number between 1 and 20. Computer wins."); +} else { + let message = "The number is " + num + ".\n" + + "You guessed " + userGuess + + " and the computer guessed " + computerGuess + ".\n"; + + // compute the difference between the guesses and the number + const computerDiff = Math.abs(num - computerGuess); + const userDiff = Math.abs(num - userGuess); + + // determine the winner + if (userDiff === computerDiff) { + message += "It's a tie!"; + } else if (userDiff < computerDiff) { + message += "You WIN!"; + } else { + message += "Computer wins."; + } + + alert(message); +} diff --git a/Murach/book_apps/ch03/guess_number/index.html b/Murach/book_apps/ch03/guess_number/index.html new file mode 100644 index 0000000..3bbddaf --- /dev/null +++ b/Murach/book_apps/ch03/guess_number/index.html @@ -0,0 +1,13 @@ + + + + + + Guess the Number + + +

The Guess the Number App

+

Click Reload to play again.

+ + + \ No newline at end of file diff --git a/Murach/book_apps/ch03/magic_eight_ball/index.html b/Murach/book_apps/ch03/magic_eight_ball/index.html new file mode 100644 index 0000000..28541ff --- /dev/null +++ b/Murach/book_apps/ch03/magic_eight_ball/index.html @@ -0,0 +1,13 @@ + + + + + + Magic Eightball + + +

Magic Eightball

+

Click Reload to ask another question.

+ + + \ No newline at end of file diff --git a/Murach/book_apps/ch03/magic_eight_ball/magic_eight_ball.js b/Murach/book_apps/ch03/magic_eight_ball/magic_eight_ball.js new file mode 100644 index 0000000..05502ad --- /dev/null +++ b/Murach/book_apps/ch03/magic_eight_ball/magic_eight_ball.js @@ -0,0 +1,48 @@ +"use strict"; + +// get user's question +const question = prompt("Please enter a yes or no question.") + +if (question) { + let answer = ""; + + // get a random number between 1 and 9 + const num = Math.ceil(Math.random() * 9); + + switch (num) { + case 1: + answer = "It is certain."; + break; + case 2: + answer = "Reply hazy, try again."; + break; + case 3: + answer = "Don't count on it."; + break; + case 4: + answer = "It is decidedly so."; + break; + case 5: + answer = "Without a doubt."; + break; + case 6: + answer = "Ask again later."; + break; + case 7: + answer = "My sources say no."; + break; + case 8: + answer = "Most likely."; + break; + case 9: + answer = "Signs point to yes."; + break; + default: + answer = "Something went wrong."; + break; + } + alert(question + "\n" + + answer); +} else { + alert("You didn't enter a question."); +} \ No newline at end of file diff --git a/Murach/book_apps/ch04/bio/bio.js b/Murach/book_apps/ch04/bio/bio.js new file mode 100644 index 0000000..1f40497 --- /dev/null +++ b/Murach/book_apps/ch04/bio/bio.js @@ -0,0 +1,29 @@ +"use strict"; + +// get name, dob, and colors and split into arrays +const names = prompt("Enter your full name").split(" "); +const dob = prompt("Enter your DOB in mm-dd-yyyy format").split("-"); +const colors = prompt("Enter your favorite colors, separated by commas") + .split(","); + +// capitalize each name +for (let i in names) { + const firstLetter = names[i].substring(0, 1).toUpperCase(); + const restOfName = names[i].substring(1).toLowerCase(); + names[i] = firstLetter + restOfName; +} + +// trim any spaces from colors +for (let i in colors) { + colors[i] = colors[i].trim(); +} + +// create a display string for the colors +const firstColors = colors.slice(0, -1); +const lastColor = colors.at(-1); +const colorString = `${firstColors.join(", ")} and ${lastColor}`; + +// display bio +alert(`Hello, my name is ${names.join(" ")}. +I was born in ${dob[2]}. +I have ${colors.length} favorite colors: ${colorString}.`); diff --git a/Murach/book_apps/ch04/bio/index.html b/Murach/book_apps/ch04/bio/index.html new file mode 100644 index 0000000..fe7651a --- /dev/null +++ b/Murach/book_apps/ch04/bio/index.html @@ -0,0 +1,10 @@ + + + + + The Bio App + + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch04/email_check/email_check.js b/Murach/book_apps/ch04/email_check/email_check.js new file mode 100644 index 0000000..98a8a84 --- /dev/null +++ b/Murach/book_apps/ch04/email_check/email_check.js @@ -0,0 +1,18 @@ +"use strict"; + +let isValid = false; +while (!isValid) { + const email = prompt("Enter your email address:"); + if (email.startsWith("_") || email.startsWith(".")) { + alert("Email address may not start with a period or underscore."); + } else if (!email.includes("@")) { + alert("Email address must contain an @ symbol."); + } else if (!email.includes(".")) { + alert("Email address must contain a period."); + } else if (!email.includes(".", email.indexOf("@"))) { + alert("The period must come after the @ symbol."); + } else { + alert(`You entered: ${email}.\nThis is a valid email address.`); + isValid = true; + } +} diff --git a/Murach/book_apps/ch04/email_check/index.html b/Murach/book_apps/ch04/email_check/index.html new file mode 100644 index 0000000..43a9733 --- /dev/null +++ b/Murach/book_apps/ch04/email_check/index.html @@ -0,0 +1,10 @@ + + + + + The Email Check App + + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch04/test_scores/index.html b/Murach/book_apps/ch04/test_scores/index.html new file mode 100644 index 0000000..b72d91e --- /dev/null +++ b/Murach/book_apps/ch04/test_scores/index.html @@ -0,0 +1,13 @@ + + + + + Average Test Scores + + +
+

The Test Scores App

+ +
+ + \ No newline at end of file diff --git a/Murach/book_apps/ch04/test_scores/test_scores.js b/Murach/book_apps/ch04/test_scores/test_scores.js new file mode 100644 index 0000000..406511a --- /dev/null +++ b/Murach/book_apps/ch04/test_scores/test_scores.js @@ -0,0 +1,34 @@ +"use strict"; + +const scores = []; + +// get scores from the user +while (true) { + const entry = prompt("Enter a test score. Or, enter 'x' to exit."); + if (entry === 'x' || entry === null) { + break; + } + + const score = parseInt(entry); + if (score >= 0 && score <= 100) { + scores[scores.length] = score; + } else { + alert("Score must by a valid number from 0 through 100."); + } +} + +// if there are no scores, notify user +if (scores.length === 0) { + alert("You didn't enter any scores."); +} else { // otherwise, calculate the total and create a display string + let total = 0; + let scoresString = ""; + for (let i in scores) { + total += scores[i]; + scoresString += `Score ${parseInt(i) + 1}: ${scores[i]}\n`; + } + const average = total/scores.length; + + // display the scores and their average + alert(`${scoresString}Average score: ${average.toFixed(2)}`); +} \ No newline at end of file diff --git a/Murach/book_apps/ch04/test_scores2/index.html b/Murach/book_apps/ch04/test_scores2/index.html new file mode 100644 index 0000000..b72d91e --- /dev/null +++ b/Murach/book_apps/ch04/test_scores2/index.html @@ -0,0 +1,13 @@ + + + + + Average Test Scores + + +
+

The Test Scores App

+ +
+ + \ No newline at end of file diff --git a/Murach/book_apps/ch04/test_scores2/test_scores.js b/Murach/book_apps/ch04/test_scores2/test_scores.js new file mode 100644 index 0000000..d44edb1 --- /dev/null +++ b/Murach/book_apps/ch04/test_scores2/test_scores.js @@ -0,0 +1,39 @@ +"use strict"; + +const scores = []; + +while (true) { + const entry = prompt("Enter a test score. Or, enter 'x' to exit."); + if (entry === 'x' || entry === null) { + break; + } + + const score = parseInt(entry); + if (score >= 0 && score <= 100) { + scores.push(score); + } else { + alert("Score must by a valid number from 0 through 100."); + } +} + +const len = scores.length; +if (len === 0) { + alert("You didn't enter any scores."); +} else { + // calculate total and average + let total = 0; + for (let score of scores) { + total += score; + } + const average = total/len; + + // get the last 3 scores in reverse order + const lastScores = (len <= 3) ? scores.slice() : scores.slice(len - 3, len); + lastScores.reverse(); + + // display score data + alert("Scores: " + scores.join(", ") + "\n" + + "Total: " + total + "\n" + + "Average: " + average.toFixed(2) + "\n" + + "Last 3: " + lastScores.join(", ")); +} \ No newline at end of file diff --git a/Murach/book_apps/ch05/bio/bio.js b/Murach/book_apps/ch05/bio/bio.js new file mode 100644 index 0000000..cdabb12 --- /dev/null +++ b/Murach/book_apps/ch05/bio/bio.js @@ -0,0 +1,46 @@ +"use strict"; + +function getAsArray(promptMsg, separator = " ") { + return prompt(promptMsg).split(separator); +} + +// use rest operator for the following functions so can accept either a +// comma-separated list of arguments or an array with a spread operator +function capitalize(...words) { + const capitalizedWords = []; + for (let word of words) { + const firstLetter = word.substring(0,1).toUpperCase(); + const restOfWord = word.substring(1).toLowerCase(); + capitalizedWords.push(firstLetter + restOfWord); + } + return capitalizedWords; +} + +function trim(...items) { + const trimmedItems = []; + for (let item of items) { + trimmedItems.push(item.trim()); + } + return trimmedItems; +} + +function getColorsString(...items) { + const firstItems = items.slice(0, -1); + const lastItem = items.at(-1); + return `${firstItems.join(", ")} and ${lastItem}`; +} + +function displayBio(names, dob, colors) { + alert("Hello, my name is " + names.join(" ") + ".\n" + + "I was born in " + dob.at(-1) + ".\n" + + "I have " + colors.length + " favorite colors: " + + getColorsString(...colors) + "."); +} + +const names = capitalize(...getAsArray("Enter your full name")); +const dob = getAsArray("Enter your DOB in mm-dd-yyyy format", "-"); + +const msg = "Enter your favorite colors, separated by commas"; +const colors = trim(...getAsArray(msg, ",")); + +displayBio(names, dob, colors); \ No newline at end of file diff --git a/Murach/book_apps/ch05/bio/index.html b/Murach/book_apps/ch05/bio/index.html new file mode 100644 index 0000000..94aff23 --- /dev/null +++ b/Murach/book_apps/ch05/bio/index.html @@ -0,0 +1,9 @@ + + + + The Bio App + + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch05/future_value/future_value.js b/Murach/book_apps/ch05/future_value/future_value.js new file mode 100644 index 0000000..3d1966e --- /dev/null +++ b/Murach/book_apps/ch05/future_value/future_value.js @@ -0,0 +1,30 @@ +"use strict"; + +function getNumber(promptMsg, defaultValue) { + let num = NaN; + while (isNaN(num)) { + num = parseFloat(prompt(promptMsg, defaultValue)); + } + return num; +} + +function calcFutureValue(investment, rate, years) { + let futureValue = investment; + for (let i = 0; i < years; i++) { + futureValue += futureValue * rate / 100; + } + return futureValue; +} + +function displayResults(investment, rate, years, futureValue) { + alert("Investment amount: $" + investment + "\n" + + "Interest rate: " + rate + "%\n" + + "Years: " + years + "\n" + + "Future Value: $" + futureValue.toFixed(2)); +} + +const investment = getNumber("Enter investment amount as xxxxx.xx", 10000); +const rate = getNumber("Enter interest rate as xx.x", 7.5); +const years = getNumber("Enter number of years", 10); +const futureValue = calcFutureValue(investment, rate, years); +displayResults(investment, rate, years, futureValue); \ No newline at end of file diff --git a/Murach/book_apps/ch05/future_value/index.html b/Murach/book_apps/ch05/future_value/index.html new file mode 100644 index 0000000..8974baf --- /dev/null +++ b/Murach/book_apps/ch05/future_value/index.html @@ -0,0 +1,12 @@ + + + + + + Future Value Calculator + + +

The Future Value Calculator

+ + + \ No newline at end of file diff --git a/Murach/book_apps/ch05/guess_number/guess.js b/Murach/book_apps/ch05/guess_number/guess.js new file mode 100644 index 0000000..2b946fb --- /dev/null +++ b/Murach/book_apps/ch05/guess_number/guess.js @@ -0,0 +1,51 @@ +"use strict"; + +// global variables +let randomNum = 0; +let tries = 0; + +// helper function +const getRandomInt = (max = 100) => { + let num = Math.random() * max; // get a random number between 0 and max + num = Math.ceil(num); // round up to nearest integer + return num; +}; + +// event handler functions +const guessClick = () => { + const guess = parseInt(document.querySelector("#number").value); + + let message = ""; + if (isNaN(guess)) { + message = "Not a valid number. Please enter a valid number." + } else if (guess < 1 || guess > 10) { + message = "Invalid number. Enter a number between 1 and 10."; + } else if (guess < randomNum) { + message = "Too small. Try again."; + tries++; + } else if (guess > randomNum) { + message = "Too big. Try again."; + tries++; + } else if (guess === randomNum) { + tries++; + const lastWord = (tries === 1) ? "try" : "tries"; + message = `You guessed it in ${tries} ${lastWord}!`; + } + document.querySelector("#message").textContent = message; +}; + +const playAgainClick = () => { + randomNum = getRandomInt(10); + tries = 0; + document.querySelector("#number").value = ""; + document.querySelector("#message").textContent = ""; +}; + +document.addEventListener("DOMContentLoaded", () => { + playAgainClick(); // initial a new game + + document.querySelector("#guess").addEventListener( + "click", guessClick); + document.querySelector("#play_again").addEventListener( + "click", playAgainClick); +}); \ No newline at end of file diff --git a/Murach/book_apps/ch05/guess_number/index.html b/Murach/book_apps/ch05/guess_number/index.html new file mode 100644 index 0000000..eaaf434 --- /dev/null +++ b/Murach/book_apps/ch05/guess_number/index.html @@ -0,0 +1,20 @@ + + + + + + Guess the Number + + + +

Guess the Number

+

It's between 1 and 10.

+ + + +
+ + + + + \ No newline at end of file diff --git a/Murach/book_apps/ch05/guess_number/main.css b/Murach/book_apps/ch05/guess_number/main.css new file mode 100644 index 0000000..e038a07 --- /dev/null +++ b/Murach/book_apps/ch05/guess_number/main.css @@ -0,0 +1,15 @@ +body { + font-family: Arial, Helvetica, sans-serif; + background-color: white; + margin: 1em auto; + width: 600px; + padding: 0 2em 1em; + border: 1px solid black; + border-radius: 1em; +} +h1 { + color: cornflowerblue; +} +input, button { + margin: 0 0.5em 1em 0; +} \ No newline at end of file diff --git a/Murach/book_apps/ch05/typewriter/index.html b/Murach/book_apps/ch05/typewriter/index.html new file mode 100644 index 0000000..2e47ba0 --- /dev/null +++ b/Murach/book_apps/ch05/typewriter/index.html @@ -0,0 +1,14 @@ + + + + + + My Typewriter App + + + +

My Typewriter App

+

+        
+    
+
\ No newline at end of file
diff --git a/Murach/book_apps/ch05/typewriter/typewriter.css b/Murach/book_apps/ch05/typewriter/typewriter.css
new file mode 100644
index 0000000..401143b
--- /dev/null
+++ b/Murach/book_apps/ch05/typewriter/typewriter.css
@@ -0,0 +1,9 @@
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    background-color: white;
+    margin: 1em;
+    padding: 0 2em 1em;
+}
+h1 {
+    color: cornflowerblue;
+}
\ No newline at end of file
diff --git a/Murach/book_apps/ch05/typewriter/typewriter.js b/Murach/book_apps/ch05/typewriter/typewriter.js
new file mode 100644
index 0000000..79d4160
--- /dev/null
+++ b/Murach/book_apps/ch05/typewriter/typewriter.js
@@ -0,0 +1,23 @@
+"use strict";
+
+document.addEventListener("DOMContentLoaded", () => {
+    
+    document.addEventListener("keydown", event => {
+        const pre = document.querySelector("#text");
+
+        const validChars = `abcdefghijklmnopqrstuvwxyz
+            ABCDEFGHIJKLMNOPQRSTUVWXYZ
+            1234567890~!@#$%^&*()_+-=\;:'",.`;
+
+        if (validChars.includes(event.key)) {
+            pre.textContent += event.key;    
+        }
+        else if (event.key.toLowerCase() === "enter") {
+            pre.textContent += "\n";
+        } 
+        else if (event.key.toLowerCase() === "backspace") {
+            // remove last character 
+            pre.textContent = pre.textContent.slice(0, -1);  
+        }
+    });
+});
\ No newline at end of file
diff --git a/Murach/book_apps/ch06/faqs/faqs.css b/Murach/book_apps/ch06/faqs/faqs.css
new file mode 100644
index 0000000..ab8ffdb
--- /dev/null
+++ b/Murach/book_apps/ch06/faqs/faqs.css
@@ -0,0 +1,41 @@
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    background-color: white;
+    margin: 1em auto;
+    width: 500px;
+    padding: 0 2em 1em;
+    border: 1px solid black;
+    border-radius: 1em;
+}
+h1 { 
+    font-size: 150%;
+}
+h2 {
+    font-size: 120%;
+    padding: 0 0 0 1.5em;
+    cursor: pointer;
+    background: url(images/plus.png) no-repeat left center;
+}
+h2.minus {
+    background: url(images/minus.png) no-repeat left center;
+}
+a {
+    color: black; 
+    text-decoration: none; 
+}
+a:focus, a:hover {
+    color: blue;
+}
+div {
+    display: none;
+}
+div.open {
+    display: block;
+}
+li {
+    padding-bottom: .25em;
+}
+p {
+    padding-bottom: .25em;
+    padding-left: 2em;
+}
\ No newline at end of file
diff --git a/Murach/book_apps/ch06/faqs/faqs.js b/Murach/book_apps/ch06/faqs/faqs.js
new file mode 100644
index 0000000..092cfbb
--- /dev/null
+++ b/Murach/book_apps/ch06/faqs/faqs.js
@@ -0,0 +1,24 @@
+"use strict";
+
+// the event handler for the click event of each 

element +const toggleVisibility = evt => { + const h2 = evt.currentTarget; // get the

element + const div = h2.nextElementSibling; // get the
element + + h2.classList.toggle("minus"); + div.classList.toggle("open"); + + evt.preventDefault(); // cancel default action of child element +}; + +document.addEventListener("DOMContentLoaded", () => { + // get the

elements + const h2s = document.querySelectorAll("#faqs h2"); + + // attach event handler for each

tag + for (let h2 of h2s) { + h2.addEventListener("click", toggleVisibility); + } + // set focus on first tag + h2s[0].firstChild.focus(); +}); \ No newline at end of file diff --git a/Murach/book_apps/ch06/faqs/images/minus.png b/Murach/book_apps/ch06/faqs/images/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..a168c8a62542ceafb923e86c43fd0f6d95031669 GIT binary patch literal 48780 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 S_=nkY7st&mq!OE5vHu2zzPTa* literal 0 HcmV?d00001 diff --git a/Murach/book_apps/ch06/faqs/index.html b/Murach/book_apps/ch06/faqs/index.html new file mode 100644 index 0000000..7b0ed83 --- /dev/null +++ b/Murach/book_apps/ch06/faqs/index.html @@ -0,0 +1,35 @@ + + + + + + FAQs + + + + +

JavaScript FAQs

+ +

What is JavaScript?

+
+

JavaScript is a scripting language that you can use to make websites + interactive.

+
+ +

Why use JavaScript?

+
+
    +
  • It has simple syntax that's easy to learn.
  • +
  • It's versatile.
  • +
  • It's one of the most popular programming languages.
  • +
+
+ +

Which browsers support JavaScript?

+
+

All the major modern browsers support JavaScript.

+
+ + + + \ No newline at end of file diff --git a/Murach/book_apps/ch06/image_swap/image_swap.css b/Murach/book_apps/ch06/image_swap/image_swap.css new file mode 100644 index 0000000..5b34961 --- /dev/null +++ b/Murach/book_apps/ch06/image_swap/image_swap.css @@ -0,0 +1,16 @@ +body { + font-family: Arial, Helvetica, sans-serif; + background-color: white; + margin: 1em auto; + width: 550px; + padding: 0 1em 1em 0; + border: 1px solid black; + border-radius: 1em; + text-align: center; +} +h1, h2 { + color: cornflowerblue; +} +li { + display: inline; +} \ No newline at end of file diff --git a/Murach/book_apps/ch06/image_swap/image_swap.js b/Murach/book_apps/ch06/image_swap/image_swap.js new file mode 100644 index 0000000..2aa0ac5 --- /dev/null +++ b/Murach/book_apps/ch06/image_swap/image_swap.js @@ -0,0 +1,32 @@ +"use strict"; + +const getElement = selector => document.querySelector(selector); + +document.addEventListener("DOMContentLoaded", () => { + // get the main image and caption elements + const mainImage = getElement("#main_image"); + const caption = getElement("#caption"); + + // get all the elements in the