diff --git a/api/node_modules/.package-lock.json b/api/node_modules/.package-lock.json index d7a6f98..381009d 100644 --- a/api/node_modules/.package-lock.json +++ b/api/node_modules/.package-lock.json @@ -5,9 +5,9 @@ "requires": true, "packages": { "node_modules/@prisma/client": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.8.2.tgz", - "integrity": "sha512-5II+vbyzv4si6Yunwgkj0qT/iY0zyspttoDrL3R4BYgLdp42/d2C8xdi9vqkrYtKt9H32oFIukvyw3Koz5JoDg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.9.0.tgz", + "integrity": "sha512-Gg7j1hwy3SgF1KHrh0PZsYvAaykeR0PaxusnLXydehS96voYCGt1U5zVR31NIouYc63hWzidcrir1a7AIyCsNQ==", "hasInstallScript": true, "engines": { "node": ">=18.18" @@ -26,57 +26,57 @@ } }, "node_modules/@prisma/config": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.8.2.tgz", - "integrity": "sha512-ZJY1fF4qRBPdLQ/60wxNtX+eu89c3AkYEcP7L3jkp0IPXCNphCYxikTg55kPJLDOG6P0X+QG5tCv6CmsBRZWFQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.9.0.tgz", + "integrity": "sha512-Wcfk8/lN3WRJd5w4jmNQkUwhUw0eksaU/+BlAJwPQKW10k0h0LC9PD/6TQFmqKVbHQL0vG2z266r0S1MPzzhbA==", "devOptional": true, "dependencies": { "jiti": "2.4.2" } }, "node_modules/@prisma/debug": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.8.2.tgz", - "integrity": "sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.9.0.tgz", + "integrity": "sha512-bFeur/qi/Q+Mqk4JdQ3R38upSYPebv5aOyD1RKywVD+rAMLtRkmTFn28ZuTtVOnZHEdtxnNOCH+bPIeSGz1+Fg==", "devOptional": true }, "node_modules/@prisma/engines": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.8.2.tgz", - "integrity": "sha512-XqAJ//LXjqYRQ1RRabs79KOY4+v6gZOGzbcwDQl0D6n9WBKjV7qdrbd042CwSK0v0lM9MSHsbcFnU2Yn7z8Zlw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.9.0.tgz", + "integrity": "sha512-im0X0bwDLA0244CDf8fuvnLuCQcBBdAGgr+ByvGfQY9wWl6EA+kRGwVk8ZIpG65rnlOwtaWIr/ZcEU5pNVvq9g==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/debug": "6.8.2", - "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "@prisma/fetch-engine": "6.8.2", - "@prisma/get-platform": "6.8.2" + "@prisma/debug": "6.9.0", + "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "@prisma/fetch-engine": "6.9.0", + "@prisma/get-platform": "6.9.0" } }, "node_modules/@prisma/engines-version": { - "version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e.tgz", - "integrity": "sha512-Rkik9lMyHpFNGaLpPF3H5q5TQTkm/aE7DsGM5m92FZTvWQsvmi6Va8On3pWvqLHOt5aPUvFb/FeZTmphI4CPiQ==", + "version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e.tgz", + "integrity": "sha512-Qp9gMoBHgqhKlrvumZWujmuD7q4DV/gooEyPCLtbkc13EZdSz2RsGUJ5mHb3RJgAbk+dm6XenqG7obJEhXcJ6Q==", "devOptional": true }, "node_modules/@prisma/fetch-engine": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.8.2.tgz", - "integrity": "sha512-lCvikWOgaLOfqXGacEKSNeenvj0n3qR5QvZUOmPE2e1Eh8cMYSobxonCg9rqM6FSdTfbpqp9xwhSAOYfNqSW0g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.9.0.tgz", + "integrity": "sha512-PMKhJdl4fOdeE3J3NkcWZ+tf3W6rx3ht/rLU8w4SXFRcLhd5+3VcqY4Kslpdm8osca4ej3gTfB3+cSk5pGxgFg==", "devOptional": true, "dependencies": { - "@prisma/debug": "6.8.2", - "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "@prisma/get-platform": "6.8.2" + "@prisma/debug": "6.9.0", + "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "@prisma/get-platform": "6.9.0" } }, "node_modules/@prisma/get-platform": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.8.2.tgz", - "integrity": "sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.9.0.tgz", + "integrity": "sha512-/B4n+5V1LI/1JQcHp+sUpyRT1bBgZVPHbsC4lt4/19Xp4jvNIVcq5KYNtQDk5e/ukTSjo9PZVAxxy9ieFtlpTQ==", "devOptional": true, "dependencies": { - "@prisma/debug": "6.8.2" + "@prisma/debug": "6.9.0" } }, "node_modules/accepts": { @@ -567,9 +567,9 @@ } }, "node_modules/node-cron": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.0.5.tgz", - "integrity": "sha512-XN5PwNBniFz6y9Ic/VChtrBtlXfAqdKUFou7nid/1pLGNFKO7cXN1nmLKUL7KLnM/Y4nUe5/EC+GsAghCj/N5g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.1.0.tgz", + "integrity": "sha512-OS+3ORu+h03/haS6Di8Qr7CrVs4YaKZZOynZwQpyPZDnR3tqRbwJmuP2gVR16JfhLgyNlloAV1VTrrWlRogCFA==", "engines": { "node": ">=6.0.0" } @@ -618,15 +618,15 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/pg": { - "version": "8.15.6", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz", - "integrity": "sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz", + "integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==", "dependencies": { - "pg-connection-string": "^2.8.5", - "pg-pool": "^3.9.6", - "pg-protocol": "^1.9.5", - "pg-types": "^2.1.0", - "pgpass": "1.x" + "pg-connection-string": "^2.9.0", + "pg-pool": "^3.10.0", + "pg-protocol": "^1.10.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" }, "engines": { "node": ">= 8.0.0" @@ -650,9 +650,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz", - "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==" + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz", + "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -663,17 +663,17 @@ } }, "node_modules/pg-pool": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz", - "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz", + "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz", - "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", + "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -734,14 +734,14 @@ } }, "node_modules/prisma": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.8.2.tgz", - "integrity": "sha512-JNricTXQxzDtRS7lCGGOB4g5DJ91eg3nozdubXze3LpcMl1oWwcFddrj++Up3jnRE6X/3gB/xz3V+ecBk/eEGA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.9.0.tgz", + "integrity": "sha512-resJAwMyZREC/I40LF6FZ6rZTnlrlrYrb63oW37Gq+U+9xHwbyMSPJjKtM7VZf3gTO86t/Oyz+YeSXr3CmAY1Q==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/config": "6.8.2", - "@prisma/engines": "6.8.2" + "@prisma/config": "6.9.0", + "@prisma/engines": "6.9.0" }, "bin": { "prisma": "build/index.js" diff --git a/api/package-lock.json b/api/package-lock.json index fb80fa9..6232d2d 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -19,9 +19,9 @@ } }, "node_modules/@prisma/client": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.8.2.tgz", - "integrity": "sha512-5II+vbyzv4si6Yunwgkj0qT/iY0zyspttoDrL3R4BYgLdp42/d2C8xdi9vqkrYtKt9H32oFIukvyw3Koz5JoDg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.9.0.tgz", + "integrity": "sha512-Gg7j1hwy3SgF1KHrh0PZsYvAaykeR0PaxusnLXydehS96voYCGt1U5zVR31NIouYc63hWzidcrir1a7AIyCsNQ==", "hasInstallScript": true, "engines": { "node": ">=18.18" @@ -40,57 +40,57 @@ } }, "node_modules/@prisma/config": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.8.2.tgz", - "integrity": "sha512-ZJY1fF4qRBPdLQ/60wxNtX+eu89c3AkYEcP7L3jkp0IPXCNphCYxikTg55kPJLDOG6P0X+QG5tCv6CmsBRZWFQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.9.0.tgz", + "integrity": "sha512-Wcfk8/lN3WRJd5w4jmNQkUwhUw0eksaU/+BlAJwPQKW10k0h0LC9PD/6TQFmqKVbHQL0vG2z266r0S1MPzzhbA==", "devOptional": true, "dependencies": { "jiti": "2.4.2" } }, "node_modules/@prisma/debug": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.8.2.tgz", - "integrity": "sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.9.0.tgz", + "integrity": "sha512-bFeur/qi/Q+Mqk4JdQ3R38upSYPebv5aOyD1RKywVD+rAMLtRkmTFn28ZuTtVOnZHEdtxnNOCH+bPIeSGz1+Fg==", "devOptional": true }, "node_modules/@prisma/engines": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.8.2.tgz", - "integrity": "sha512-XqAJ//LXjqYRQ1RRabs79KOY4+v6gZOGzbcwDQl0D6n9WBKjV7qdrbd042CwSK0v0lM9MSHsbcFnU2Yn7z8Zlw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.9.0.tgz", + "integrity": "sha512-im0X0bwDLA0244CDf8fuvnLuCQcBBdAGgr+ByvGfQY9wWl6EA+kRGwVk8ZIpG65rnlOwtaWIr/ZcEU5pNVvq9g==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/debug": "6.8.2", - "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "@prisma/fetch-engine": "6.8.2", - "@prisma/get-platform": "6.8.2" + "@prisma/debug": "6.9.0", + "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "@prisma/fetch-engine": "6.9.0", + "@prisma/get-platform": "6.9.0" } }, "node_modules/@prisma/engines-version": { - "version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e.tgz", - "integrity": "sha512-Rkik9lMyHpFNGaLpPF3H5q5TQTkm/aE7DsGM5m92FZTvWQsvmi6Va8On3pWvqLHOt5aPUvFb/FeZTmphI4CPiQ==", + "version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e.tgz", + "integrity": "sha512-Qp9gMoBHgqhKlrvumZWujmuD7q4DV/gooEyPCLtbkc13EZdSz2RsGUJ5mHb3RJgAbk+dm6XenqG7obJEhXcJ6Q==", "devOptional": true }, "node_modules/@prisma/fetch-engine": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.8.2.tgz", - "integrity": "sha512-lCvikWOgaLOfqXGacEKSNeenvj0n3qR5QvZUOmPE2e1Eh8cMYSobxonCg9rqM6FSdTfbpqp9xwhSAOYfNqSW0g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.9.0.tgz", + "integrity": "sha512-PMKhJdl4fOdeE3J3NkcWZ+tf3W6rx3ht/rLU8w4SXFRcLhd5+3VcqY4Kslpdm8osca4ej3gTfB3+cSk5pGxgFg==", "devOptional": true, "dependencies": { - "@prisma/debug": "6.8.2", - "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", - "@prisma/get-platform": "6.8.2" + "@prisma/debug": "6.9.0", + "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", + "@prisma/get-platform": "6.9.0" } }, "node_modules/@prisma/get-platform": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.8.2.tgz", - "integrity": "sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.9.0.tgz", + "integrity": "sha512-/B4n+5V1LI/1JQcHp+sUpyRT1bBgZVPHbsC4lt4/19Xp4jvNIVcq5KYNtQDk5e/ukTSjo9PZVAxxy9ieFtlpTQ==", "devOptional": true, "dependencies": { - "@prisma/debug": "6.8.2" + "@prisma/debug": "6.9.0" } }, "node_modules/accepts": { @@ -581,9 +581,9 @@ } }, "node_modules/node-cron": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.0.5.tgz", - "integrity": "sha512-XN5PwNBniFz6y9Ic/VChtrBtlXfAqdKUFou7nid/1pLGNFKO7cXN1nmLKUL7KLnM/Y4nUe5/EC+GsAghCj/N5g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.1.0.tgz", + "integrity": "sha512-OS+3ORu+h03/haS6Di8Qr7CrVs4YaKZZOynZwQpyPZDnR3tqRbwJmuP2gVR16JfhLgyNlloAV1VTrrWlRogCFA==", "engines": { "node": ">=6.0.0" } @@ -632,15 +632,15 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/pg": { - "version": "8.15.6", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz", - "integrity": "sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz", + "integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==", "dependencies": { - "pg-connection-string": "^2.8.5", - "pg-pool": "^3.9.6", - "pg-protocol": "^1.9.5", - "pg-types": "^2.1.0", - "pgpass": "1.x" + "pg-connection-string": "^2.9.0", + "pg-pool": "^3.10.0", + "pg-protocol": "^1.10.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" }, "engines": { "node": ">= 8.0.0" @@ -664,9 +664,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz", - "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==" + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz", + "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -677,17 +677,17 @@ } }, "node_modules/pg-pool": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz", - "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz", + "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz", - "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", + "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -748,14 +748,14 @@ } }, "node_modules/prisma": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.8.2.tgz", - "integrity": "sha512-JNricTXQxzDtRS7lCGGOB4g5DJ91eg3nozdubXze3LpcMl1oWwcFddrj++Up3jnRE6X/3gB/xz3V+ecBk/eEGA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.9.0.tgz", + "integrity": "sha512-resJAwMyZREC/I40LF6FZ6rZTnlrlrYrb63oW37Gq+U+9xHwbyMSPJjKtM7VZf3gTO86t/Oyz+YeSXr3CmAY1Q==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/config": "6.8.2", - "@prisma/engines": "6.8.2" + "@prisma/config": "6.9.0", + "@prisma/engines": "6.9.0" }, "bin": { "prisma": "build/index.js" diff --git a/api/routes/planillas/planillas.js b/api/routes/planillas/planillas.js index 9c2cf5b..a08ee80 100644 --- a/api/routes/planillas/planillas.js +++ b/api/routes/planillas/planillas.js @@ -3,10 +3,20 @@ const router = express.Router(); import { PrismaClient, Prisma } from '../../prisma/generated/client/index.js'; const prisma = new PrismaClient(); +const log = (...args) => console.log('[PLANILLA]', ...args); + +// 📡 Log de cada request entrante +router.use((req, _res, next) => { + log(`${req.method} ${req.originalUrl}`, req.method === 'GET' ? req.query : req.body); + next(); +}); + // GET all planillas -router.get('/', async (req, res) => { +router.get('/', async (_req, res) => { try { + log('findMany planilla'); const planillas = await prisma.planilla.findMany(); + log('Planillas encontradas', planillas.length); res.json(planillas); } catch (e) { console.error(e); @@ -14,13 +24,74 @@ router.get('/', async (req, res) => { } }); -// GET planilla by ID -router.get('/:id', async (req, res) => { - const { id } = req.params; + +// 🔍 GET /api/planillas/search +router.get('/search', async (req, res) => { + const { + q, + empleado_id, + estado, + titulo, + fecha_desde_desde, + fecha_desde_hasta, + fecha_hasta_desde, + fecha_hasta_hasta, + limit = 0, + } = req.query; + try { - const planilla = await prisma.planilla.findUnique({ - where: { id: parseInt(id) }, + const where = {}; + + // filtros directos + if (empleado_id) where.empleado_id = parseInt(empleado_id); + if (estado) where.estado = { contains: estado, mode: 'insensitive' }; + if (titulo) where.titulo = { contains: titulo, mode: 'insensitive' }; + + // rangos de fechas + if (fecha_desde_desde || fecha_desde_hasta) { + where.fecha_desde = {}; + if (fecha_desde_desde) where.fecha_desde.gte = new Date(fecha_desde_desde); + if (fecha_desde_hasta) where.fecha_desde.lte = new Date(fecha_desde_hasta); + } + + if (fecha_hasta_desde || fecha_hasta_hasta) { + where.fecha_hasta = {}; + if (fecha_hasta_desde) where.fecha_hasta.gte = new Date(fecha_hasta_desde); + if (fecha_hasta_hasta) where.fecha_hasta.lte = new Date(fecha_hasta_hasta); + } + + // bĂșsqueda libre + if (q) { + const qi = parseInt(q); + where.OR = [ + ...(isNaN(qi) ? [] : [{ id: qi }, { empleado_id: qi }]), + { titulo: { contains: q, mode: 'insensitive' } }, + { estado: { contains: q, mode: 'insensitive' } }, + ]; + } + + const take = parseInt(limit) || (Object.keys(where).length ? undefined : 100); + + log('search planillas', { where, take }); + const planillas = await prisma.planilla.findMany({ + where, + take, + orderBy: { id: 'desc' }, }); + + res.json(planillas); + } catch (e) { + console.error(e); + res.status(500).json({ message: 'Error al buscar planillas.' }); + } +}); + +// GET planilla by ID +router.get('/:id(\\d+)', async (req, res) => { + const id = parseInt(req.params.id); + try { + log('findUnique planilla', id); + const planilla = await prisma.planilla.findUnique({ where: { id: parseInt(id) } }); if (planilla) { res.json(planilla); } else { @@ -53,6 +124,7 @@ router.post('/', async (req, res) => { } try { + log('create planilla', req.body); const nuevaPlanilla = await prisma.planilla.create({ data: { empleado_id: parseInt(empleado_id), @@ -67,12 +139,12 @@ router.post('/', async (req, res) => { }, }); res.status(201).json(nuevaPlanilla); + log(nuevaPlanilla, 'resultado create planilla'); } catch (e) { - if (e instanceof Prisma.PrismaClientKnownRequestError) { - if (e.code === 'P2003') { - return res.status(400).json({ message: 'El empleado_id proporcionado no existe.' }); - } + if (e instanceof Prisma.PrismaClientKnownRequestError && e.code === 'P2003') { + return res.status(400).json({ message: 'El empleado_id proporcionado no existe.' }); } + log('Error al crear planilla', e); console.error(e); res.status(500).json({ message: 'Error al crear planilla.' }); } @@ -100,9 +172,11 @@ router.put('/:id', async (req, res) => { if (titulo !== undefined) updateData.titulo = titulo; if (total !== undefined) updateData.total = total ? parseFloat(total) : null; if (estado !== undefined) updateData.estado = estado; - if (fecha_anulado !== undefined) updateData.fecha_anulado = fecha_anulado ? new Date(fecha_anulado) : null; + if (fecha_anulado !== undefined) + updateData.fecha_anulado = fecha_anulado ? new Date(fecha_anulado) : null; if (anulador_id !== undefined) updateData.anulador_id = anulador_id; + log('update planilla', { id, ...updateData }); const planillaActualizada = await prisma.planilla.update({ where: { id: parseInt(id) }, data: updateData, @@ -110,12 +184,10 @@ router.put('/:id', async (req, res) => { res.json(planillaActualizada); } catch (e) { if (e instanceof Prisma.PrismaClientKnownRequestError) { - if (e.code === 'P2025') { + if (e.code === 'P2025') return res.status(404).json({ message: 'Planilla no encontrada para actualizar.' }); - } - if (e.code === 'P2003') { + if (e.code === 'P2003') return res.status(400).json({ message: 'El empleado_id proporcionado no existe.' }); - } } console.error(e); res.status(500).json({ message: 'Error al actualizar planilla.' }); @@ -126,19 +198,21 @@ router.put('/:id', async (req, res) => { router.delete('/:id', async (req, res) => { const { id } = req.params; try { - await prisma.planilla.delete({ - where: { id: parseInt(id) }, - }); + log('delete planilla', id); + await prisma.planilla.delete({ where: { id: parseInt(id) } }); res.status(204).send(); } catch (e) { - if (e instanceof Prisma.PrismaClientKnownRequestError) { - if (e.code === 'P2025') { - return res.status(404).json({ message: 'Planilla no encontrada para eliminar.' }); - } + if (e instanceof Prisma.PrismaClientKnownRequestError && e.code === 'P2025') { + return res.status(404).json({ message: 'Planilla no encontrada para eliminar.' }); } console.error(e); res.status(500).json({ message: 'Error al eliminar planilla.' }); } }); + + + + + export default router; diff --git a/mcp/index.js b/mcp/index.js index 8d1dbc8..2430bdf 100644 --- a/mcp/index.js +++ b/mcp/index.js @@ -1,3 +1,4 @@ +// 🚹 Nuevos logs en puntos clave para saber quĂ© se pide y cuĂĄndo import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; @@ -5,13 +6,15 @@ import express from "express"; import { z } from "zod"; const API_BASE_URL = process.env.PLANILLA_API_URL || "http://localhost:4000"; +const log = (...args) => console.log("[MCP]", ...args); +// 👀 Log de cada request al API async function fetchJSON(path, options = {}) { + const method = options.method || "GET"; + console.log(`[API] ${method} ${API_BASE_URL}${path}`); const res = await fetch(`${API_BASE_URL}${path}`, { - headers: { - 'Content-Type': 'application/json' - }, - ...options + headers: { "Content-Type": "application/json" }, + ...options, }); if (!res.ok) { const txt = await res.text(); @@ -21,38 +24,26 @@ async function fetchJSON(path, options = {}) { } function createServer() { - const server = new McpServer({ - name: "planilla-mcp", - version: "0.1.0", - }); + const server = new McpServer({ name: "planilla-mcp", version: "0.1.0" }); // ----- Resources ----- - // List all planillas - server.resource( - "planilla-list", - "planilla://list", - async (uri) => { - const planillas = await fetchJSON('/api/planillas'); - return { - contents: [{ uri: uri.href, text: JSON.stringify(planillas) }] - }; - } - ); + server.resource("planilla-list", "planilla://list", async (uri) => { + log("Recurso solicitado", "planilla-list"); + const planillas = await fetchJSON("/api/planillas"); + return { contents: [{ uri: uri.href, text: JSON.stringify(planillas) }] }; + }); - // Get planilla by ID server.resource( "planilla", new ResourceTemplate("planilla://{id}", { list: undefined }), async (uri, { id }) => { + log("Recurso solicitado", `planilla ${id}`); const planilla = await fetchJSON(`/api/planillas/${id}`); - return { - contents: [{ uri: uri.href, text: JSON.stringify(planilla) }] - }; + return { contents: [{ uri: uri.href, text: JSON.stringify(planilla) }] }; } ); // ----- Tools ----- - // Create a new planilla server.tool( "create-planilla", "Crea una planilla", @@ -68,13 +59,15 @@ function createServer() { anulador_id: z.number().optional(), }, async (params) => { - const body = JSON.stringify(params); - const planilla = await fetchJSON('/api/planillas', { method: 'POST', body }); - return { content: [{ type: 'text', text: JSON.stringify(planilla) }] }; + log("Tool invocada", "create-planilla", params); + const planilla = await fetchJSON("/api/planillas", { + method: "POST", + body: JSON.stringify(params), + }); + return { content: [{ type: "text", text: JSON.stringify(planilla) }] }; } ); - // Update planilla by ID server.tool( "update-planilla", "Actualiza una planilla existente", @@ -90,29 +83,63 @@ function createServer() { anulador_id: z.number().optional(), }, async ({ id, ...updates }) => { - const body = JSON.stringify(updates); + log("Tool invocada", "update-planilla", { id, ...updates }); const planilla = await fetchJSON(`/api/planillas/${id}`, { - method: 'PUT', - body, + method: "PUT", + body: JSON.stringify(updates), }); - return { content: [{ type: 'text', text: JSON.stringify(planilla) }] }; + return { content: [{ type: "text", text: JSON.stringify(planilla) }] }; } ); - // Delete planilla by ID server.tool( "delete-planilla", "Elimina una planilla", { id: z.number() }, async ({ id }) => { - await fetchJSON(`/api/planillas/${id}`, { method: 'DELETE' }); - return { content: [{ type: 'text', text: `Planilla ${id} eliminada` }] }; + log("Tool invocada", "delete-planilla", { id }); + await fetchJSON(`/api/planillas/${id}`, { method: "DELETE" }); + return { content: [{ type: "text", text: `Planilla ${id} eliminada` }] }; } ); + +server.tool( + "search-planillas", + "Busca planillas. `q` es un texto libre que matchea id, empleado_id, tĂ­tulo o estado. " ++ "Si no mandĂĄs ningĂșn argumento devuelve los primeros 100 registros.", + { + q: z.string().optional(), + empleado_id: z.number().optional(), + estado: z.string().optional(), + titulo: z.string().optional(), + fecha_desde_desde: z.string().optional(), + fecha_desde_hasta: z.string().optional(), + fecha_hasta_desde: z.string().optional(), + fecha_hasta_hasta: z.string().optional(), + }, + async (params) => { + log("Tool invocada", "search-planillas", params); + const qs = new URLSearchParams( + Object.entries(params).filter(([, v]) => v !== undefined).map(([k, v]) => [k, String(v)]) + ); + + // 👇 Si no hay filtros, limit=100 + if (qs.toString() === "") qs.append("limit", "100"); + + const planillas = await fetchJSON(`/api/planillas/search?${qs.toString()}`); + return { content: [{ type: "text", text: JSON.stringify(planillas) }] }; + } +); + + + return server; } + + + async function main() { const useStdio = process.argv.includes("--stdio"); if (useStdio) { @@ -123,6 +150,13 @@ async function main() { } else { const app = express(); app.use(express.json()); + + // 🌐 Log de cada request HTTP entrante + app.use((req, _res, next) => { + console.log(`[HTTP] ${req.method} ${req.originalUrl}`); + next(); + }); + const port = process.env.PORT || 5000; app.post("/mcp", async (req, res) => { @@ -147,21 +181,15 @@ async function main() { } }); - app.get("/mcp", async (_req, res) => { - res.writeHead(405).end(JSON.stringify({ - jsonrpc: "2.0", - error: { code: -32000, message: "Method not allowed." }, - id: null, - })); - }); - - app.delete("/mcp", async (_req, res) => { - res.writeHead(405).end(JSON.stringify({ - jsonrpc: "2.0", - error: { code: -32000, message: "Method not allowed." }, - id: null, - })); - }); + ["get", "delete"].forEach((m) => + app[m]("/mcp", (_req, res) => + res.status(405).json({ + jsonrpc: "2.0", + error: { code: -32000, message: "Method not allowed." }, + id: null, + }) + ) + ); app.listen(port, () => { console.log(`MCP Planilla HTTP server listening on port ${port}`); diff --git a/mcp/node_modules/.bin/mime b/mcp/node_modules/.bin/mime deleted file mode 100644 index 7751de3..0000000 --- a/mcp/node_modules/.bin/mime +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../mime/cli.js" "$@" -else - exec node "$basedir/../mime/cli.js" "$@" -fi diff --git a/mcp/node_modules/.bin/mime.cmd b/mcp/node_modules/.bin/mime.cmd deleted file mode 100644 index 54491f1..0000000 --- a/mcp/node_modules/.bin/mime.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/mcp/node_modules/.bin/mime.ps1 b/mcp/node_modules/.bin/mime.ps1 deleted file mode 100644 index 2222f40..0000000 --- a/mcp/node_modules/.bin/mime.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args - } else { - & "$basedir/node$exe" "$basedir/../mime/cli.js" $args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "node$exe" "$basedir/../mime/cli.js" $args - } else { - & "node$exe" "$basedir/../mime/cli.js" $args - } - $ret=$LASTEXITCODE -} -exit $ret diff --git a/mcp/node_modules/.package-lock.json b/mcp/node_modules/.package-lock.json index 534c45e..5a8a862 100644 --- a/mcp/node_modules/.package-lock.json +++ b/mcp/node_modules/.package-lock.json @@ -1,6 +1,6 @@ { - "name": "planilla-mcp", - "version": "1.0.0", + "name": "planilla-mcp-server", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { @@ -24,10 +24,11 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/accepts": { + "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -36,10 +37,11 @@ "node": ">= 0.6" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/body-parser": { + "node_modules/body-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", @@ -55,284 +57,6 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -345,6 +69,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -357,6 +82,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -369,9 +95,10 @@ } }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -396,9 +123,13 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/cors": { "version": "2.8.5", @@ -426,11 +157,20 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/depd": { @@ -441,19 +181,11 @@ "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -480,6 +212,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -488,6 +221,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -496,6 +230,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -536,44 +271,41 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "funding": { "type": "opencollective", @@ -595,17 +327,17 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" @@ -620,17 +352,19 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -639,6 +373,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -662,6 +397,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -674,6 +410,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -685,6 +422,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -696,6 +434,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -719,11 +458,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -756,73 +496,64 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -839,6 +570,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -881,11 +613,6 @@ "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" - }, "node_modules/pkce-challenge": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", @@ -907,11 +634,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -942,17 +670,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -968,27 +685,6 @@ "node": ">= 18" } }, - "node_modules/router/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/router/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/router/node_modules/path-to-regexp": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", @@ -1014,7 +710,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -1022,53 +719,40 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/setprototypeof": { @@ -1099,6 +783,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -1117,6 +802,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -1132,6 +818,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -1149,6 +836,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -1180,12 +868,14 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" @@ -1199,14 +889,6 @@ "node": ">= 0.8" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/HISTORY.md deleted file mode 100644 index 627a81d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/HISTORY.md +++ /dev/null @@ -1,250 +0,0 @@ -2.0.0 / 2024-08-31 -================== - - * Drop node <18 support - * deps: mime-types@^3.0.0 - * deps: negotiator@^1.0.0 - -1.3.8 / 2022-02-02 -================== - - * deps: mime-types@~2.1.34 - - deps: mime-db@~1.51.0 - * deps: negotiator@0.6.3 - -1.3.7 / 2019-04-29 -================== - - * deps: negotiator@0.6.2 - - Fix sorting charset, encoding, and language with extra parameters - -1.3.6 / 2019-04-28 -================== - - * deps: mime-types@~2.1.24 - - deps: mime-db@~1.40.0 - -1.3.5 / 2018-02-28 -================== - - * deps: mime-types@~2.1.18 - - deps: mime-db@~1.33.0 - -1.3.4 / 2017-08-22 -================== - - * deps: mime-types@~2.1.16 - - deps: mime-db@~1.29.0 - -1.3.3 / 2016-05-02 -================== - - * deps: mime-types@~2.1.11 - - deps: mime-db@~1.23.0 - * deps: negotiator@0.6.1 - - perf: improve `Accept` parsing speed - - perf: improve `Accept-Charset` parsing speed - - perf: improve `Accept-Encoding` parsing speed - - perf: improve `Accept-Language` parsing speed - -1.3.2 / 2016-03-08 -================== - - * deps: mime-types@~2.1.10 - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - - deps: mime-db@~1.22.0 - -1.3.1 / 2016-01-19 -================== - - * deps: mime-types@~2.1.9 - - deps: mime-db@~1.21.0 - -1.3.0 / 2015-09-29 -================== - - * deps: mime-types@~2.1.7 - - deps: mime-db@~1.19.0 - * deps: negotiator@0.6.0 - - Fix including type extensions in parameters in `Accept` parsing - - Fix parsing `Accept` parameters with quoted equals - - Fix parsing `Accept` parameters with quoted semicolons - - Lazy-load modules from main entry point - - perf: delay type concatenation until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove closures getting spec properties - - perf: remove a closure from media type parsing - - perf: remove property delete from media type parsing - -1.2.13 / 2015-09-06 -=================== - - * deps: mime-types@~2.1.6 - - deps: mime-db@~1.18.0 - -1.2.12 / 2015-07-30 -=================== - - * deps: mime-types@~2.1.4 - - deps: mime-db@~1.16.0 - -1.2.11 / 2015-07-16 -=================== - - * deps: mime-types@~2.1.3 - - deps: mime-db@~1.15.0 - -1.2.10 / 2015-07-01 -=================== - - * deps: mime-types@~2.1.2 - - deps: mime-db@~1.14.0 - -1.2.9 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - perf: fix deopt during mapping - -1.2.8 / 2015-06-07 -================== - - * deps: mime-types@~2.1.0 - - deps: mime-db@~1.13.0 - * perf: avoid argument reassignment & argument slice - * perf: avoid negotiator recursive construction - * perf: enable strict mode - * perf: remove unnecessary bitwise operator - -1.2.7 / 2015-05-10 -================== - - * deps: negotiator@0.5.3 - - Fix media type parameter matching to be case-insensitive - -1.2.6 / 2015-05-07 -================== - - * deps: mime-types@~2.0.11 - - deps: mime-db@~1.9.1 - * deps: negotiator@0.5.2 - - Fix comparing media types with quoted values - - Fix splitting media types with quoted commas - -1.2.5 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - deps: mime-db@~1.8.0 - -1.2.4 / 2015-02-14 -================== - - * Support Node.js 0.6 - * deps: mime-types@~2.0.9 - - deps: mime-db@~1.7.0 - * deps: negotiator@0.5.1 - - Fix preference sorting to be stable for long acceptable lists - -1.2.3 / 2015-01-31 -================== - - * deps: mime-types@~2.0.8 - - deps: mime-db@~1.6.0 - -1.2.2 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - deps: mime-db@~1.5.0 - -1.2.1 / 2014-12-30 -================== - - * deps: mime-types@~2.0.5 - - deps: mime-db@~1.3.1 - -1.2.0 / 2014-12-19 -================== - - * deps: negotiator@0.5.0 - - Fix list return order when large accepted list - - Fix missing identity encoding when q=0 exists - - Remove dynamic building of Negotiator class - -1.1.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - deps: mime-db@~1.3.0 - -1.1.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - deps: mime-db@~1.2.0 - -1.1.2 / 2014-10-14 -================== - - * deps: negotiator@0.4.9 - - Fix error when media type has invalid parameter - -1.1.1 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - deps: mime-db@~1.1.0 - * deps: negotiator@0.4.8 - - Fix all negotiations to be case-insensitive - - Stable sort preferences of same quality according to client order - -1.1.0 / 2014-09-02 -================== - - * update `mime-types` - -1.0.7 / 2014-07-04 -================== - - * Fix wrong type returned from `type` when match after unknown extension - -1.0.6 / 2014-06-24 -================== - - * deps: negotiator@0.4.7 - -1.0.5 / 2014-06-20 -================== - - * fix crash when unknown extension given - -1.0.4 / 2014-06-19 -================== - - * use `mime-types` - -1.0.3 / 2014-06-11 -================== - - * deps: negotiator@0.4.6 - - Order by specificity when quality is the same - -1.0.2 / 2014-05-29 -================== - - * Fix interpretation when header not in request - * deps: pin negotiator@0.4.5 - -1.0.1 / 2014-01-18 -================== - - * Identity encoding isn't always acceptable - * deps: negotiator@~0.4.0 - -1.0.0 / 2013-12-27 -================== - - * Genesis diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/README.md deleted file mode 100644 index f3f10c4..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# accepts - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). -Extracted from [koa](https://www.npmjs.com/package/koa) for general use. - -In addition to negotiator, it allows: - -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` - as well as `('text/html', 'application/json')`. -- Allows type shorthands such as `json`. -- Returns `false` when no types match -- Treats non-existent headers as `*` - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install accepts -``` - -## API - -```js -var accepts = require('accepts') -``` - -### accepts(req) - -Create a new `Accepts` object for the given `req`. - -#### .charset(charsets) - -Return the first accepted charset. If nothing in `charsets` is accepted, -then `false` is returned. - -#### .charsets() - -Return the charsets that the request accepts, in the order of the client's -preference (most preferred first). - -#### .encoding(encodings) - -Return the first accepted encoding. If nothing in `encodings` is accepted, -then `false` is returned. - -#### .encodings() - -Return the encodings that the request accepts, in the order of the client's -preference (most preferred first). - -#### .language(languages) - -Return the first accepted language. If nothing in `languages` is accepted, -then `false` is returned. - -#### .languages() - -Return the languages that the request accepts, in the order of the client's -preference (most preferred first). - -#### .type(types) - -Return the first accepted type (and it is returned as the same text as what -appears in the `types` array). If nothing in `types` is accepted, then `false` -is returned. - -The `types` array can contain full MIME types or file extensions. Any value -that is not a full MIME type is passed to `require('mime-types').lookup`. - -#### .types() - -Return the types that the request accepts, in the order of the client's -preference (most preferred first). - -## Examples - -### Simple type negotiation - -This simple example shows how to use `accepts` to return a different typed -respond body based on what the client wants to accept. The server lists it's -preferences in order and will get back the best match between the client and -server. - -```js -var accepts = require('accepts') -var http = require('http') - -function app (req, res) { - var accept = accepts(req) - - // the order of this list is significant; should be server preferred order - switch (accept.type(['json', 'html'])) { - case 'json': - res.setHeader('Content-Type', 'application/json') - res.write('{"hello":"world!"}') - break - case 'html': - res.setHeader('Content-Type', 'text/html') - res.write('hello, world!') - break - default: - // the fallback is text/plain, so no need to specify it above - res.setHeader('Content-Type', 'text/plain') - res.write('hello, world!') - break - } - - res.end() -} - -http.createServer(app).listen(3000) -``` - -You can test this out with the cURL program: -```sh -curl -I -H'Accept: text/html' http://localhost:3000/ -``` - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master -[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml -[node-version-image]: https://badgen.net/npm/node/accepts -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/accepts -[npm-url]: https://npmjs.org/package/accepts -[npm-version-image]: https://badgen.net/npm/v/accepts diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/index.js deleted file mode 100644 index 4f2840c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/index.js +++ /dev/null @@ -1,238 +0,0 @@ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var Negotiator = require('negotiator') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = Accepts - -/** - * Create a new Accepts object for the given req. - * - * @param {object} req - * @public - */ - -function Accepts (req) { - if (!(this instanceof Accepts)) { - return new Accepts(req) - } - - this.headers = req.headers - this.negotiator = new Negotiator(req) -} - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json" or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * this.types('html'); - * // => "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} types... - * @return {String|Array|Boolean} - * @public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types_) { - var types = types_ - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i] - } - } - - // no types, return all requested types - if (!types || types.length === 0) { - return this.negotiator.mediaTypes() - } - - // no accept header, return first given type - if (!this.headers.accept) { - return types[0] - } - - var mimes = types.map(extToMime) - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) - var first = accepts[0] - - return first - ? types[mimes.indexOf(first)] - : false -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encodings... - * @return {String|Array} - * @public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings_) { - var encodings = encodings_ - - // support flattened arguments - if (encodings && !Array.isArray(encodings)) { - encodings = new Array(arguments.length) - for (var i = 0; i < encodings.length; i++) { - encodings[i] = arguments[i] - } - } - - // no encodings, return all requested encodings - if (!encodings || encodings.length === 0) { - return this.negotiator.encodings() - } - - return this.negotiator.encodings(encodings)[0] || false -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charsets... - * @return {String|Array} - * @public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets_) { - var charsets = charsets_ - - // support flattened arguments - if (charsets && !Array.isArray(charsets)) { - charsets = new Array(arguments.length) - for (var i = 0; i < charsets.length; i++) { - charsets[i] = arguments[i] - } - } - - // no charsets, return all requested charsets - if (!charsets || charsets.length === 0) { - return this.negotiator.charsets() - } - - return this.negotiator.charsets(charsets)[0] || false -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} langs... - * @return {Array|String} - * @public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (languages_) { - var languages = languages_ - - // support flattened arguments - if (languages && !Array.isArray(languages)) { - languages = new Array(arguments.length) - for (var i = 0; i < languages.length; i++) { - languages[i] = arguments[i] - } - } - - // no languages, return all requested languages - if (!languages || languages.length === 0) { - return this.negotiator.languages() - } - - return this.negotiator.languages(languages)[0] || false -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @private - */ - -function extToMime (type) { - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {Boolean} - * @private - */ - -function validMime (type) { - return typeof type === 'string' -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/package.json deleted file mode 100644 index b35b262..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/accepts/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "accepts", - "description": "Higher-level content negotiation", - "version": "2.0.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "jshttp/accepts", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "devDependencies": { - "deep-equal": "1.0.1", - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "4.3.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.0", - "nyc": "15.1.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - }, - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ] -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/HISTORY.md deleted file mode 100644 index 17dd110..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/HISTORY.md +++ /dev/null @@ -1,731 +0,0 @@ -2.2.0 / 2025-03-27 -========================= - -* refactor: normalize common options for all parsers -* deps: - * iconv-lite@^0.6.3 - -2.1.0 / 2025-02-10 -========================= - -* deps: - * type-is@^2.0.0 - * debug@^4.4.0 - * Removed destroy -* refactor: prefix built-in node module imports -* use the node require cache instead of custom caching - -2.0.2 / 2024-10-31 -========================= - -* remove `unpipe` package and use native `unpipe()` method - -2.0.1 / 2024-09-10 -========================= - -* Restore expected behavior `extended` to `false` - -2.0.0 / 2024-09-10 -========================= -* Propagate changes from 1.20.3 -* add brotli support #406 -* Breaking Change: Node.js 18 is the minimum supported version - -2.0.0-beta.2 / 2023-02-23 -========================= - -This incorporates all changes after 1.19.1 up to 1.20.2. - - * Remove deprecated `bodyParser()` combination middleware - * deps: debug@3.1.0 - - Add `DEBUG_HIDE_DATE` environment variable - - Change timer to per-namespace instead of global - - Change non-TTY date format - - Remove `DEBUG_FD` environment variable support - - Support 256 namespace colors - * deps: iconv-lite@0.5.2 - - Add encoding cp720 - - Add encoding UTF-32 - * deps: raw-body@3.0.0-beta.1 - -2.0.0-beta.1 / 2021-12-17 -========================= - - * Drop support for Node.js 0.8 - * `req.body` is no longer always initialized to `{}` - - it is left `undefined` unless a body is parsed - * `urlencoded` parser now defaults `extended` to `false` - * Use `on-finished` to determine when body read - -1.20.3 / 2024-09-10 -=================== - - * deps: qs@6.13.0 - * add `depth` option to customize the depth level in the parser - * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) - -1.20.2 / 2023-02-21 -=================== - - * Fix strict json error message on Node.js 19+ - * deps: content-type@~1.0.5 - - perf: skip value escaping when unnecessary - * deps: raw-body@2.5.2 - -1.20.1 / 2022-10-06 -=================== - - * deps: qs@6.11.0 - * perf: remove unnecessary object clone - -1.20.0 / 2022-04-02 -=================== - - * Fix error message for json parse whitespace in `strict` - * Fix internal error when inflated body exceeds limit - * Prevent loss of async hooks context - * Prevent hanging when request already read - * deps: depd@2.0.0 - - Replace internal `eval` usage with `Function` constructor - - Use instance methods on `process` to check for listeners - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - * deps: on-finished@2.4.1 - * deps: qs@6.10.3 - * deps: raw-body@2.5.1 - - deps: http-errors@2.0.0 - -1.19.2 / 2022-02-15 -=================== - - * deps: bytes@3.1.2 - * deps: qs@6.9.7 - * Fix handling of `__proto__` keys - * deps: raw-body@2.4.3 - - deps: bytes@3.1.2 - -1.19.1 / 2021-12-10 -=================== - - * deps: bytes@3.1.1 - * deps: http-errors@1.8.1 - - deps: inherits@2.0.4 - - deps: toidentifier@1.0.1 - - deps: setprototypeof@1.2.0 - * deps: qs@6.9.6 - * deps: raw-body@2.4.2 - - deps: bytes@3.1.1 - - deps: http-errors@1.8.1 - * deps: safe-buffer@5.2.1 - * deps: type-is@~1.6.18 - -1.19.0 / 2019-04-25 -=================== - - * deps: bytes@3.1.0 - - Add petabyte (`pb`) support - * deps: http-errors@1.7.2 - - Set constructor name when possible - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: iconv-lite@0.4.24 - - Added encoding MIK - * deps: qs@6.7.0 - - Fix parsing array brackets after index - * deps: raw-body@2.4.0 - - deps: bytes@3.1.0 - - deps: http-errors@1.7.2 - - deps: iconv-lite@0.4.24 - * deps: type-is@~1.6.17 - - deps: mime-types@~2.1.24 - - perf: prevent internal `throw` on invalid type - -1.18.3 / 2018-05-14 -=================== - - * Fix stack trace for strict json parse error - * deps: depd@~1.1.2 - - perf: remove argument reassignment - * deps: http-errors@~1.6.3 - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.0 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.23 - - Fix loading encoding with year appended - - Fix deprecation warnings on Node.js 10+ - * deps: qs@6.5.2 - * deps: raw-body@2.3.3 - - deps: http-errors@1.6.3 - - deps: iconv-lite@0.4.23 - * deps: type-is@~1.6.16 - - deps: mime-types@~2.1.18 - -1.18.2 / 2017-09-22 -=================== - - * deps: debug@2.6.9 - * perf: remove argument reassignment - -1.18.1 / 2017-09-12 -=================== - - * deps: content-type@~1.0.4 - - perf: remove argument reassignment - - perf: skip parameter parsing when no parameters - * deps: iconv-lite@0.4.19 - - Fix ISO-8859-1 regression - - Update Windows-1255 - * deps: qs@6.5.1 - - Fix parsing & compacting very deep objects - * deps: raw-body@2.3.2 - - deps: iconv-lite@0.4.19 - -1.18.0 / 2017-09-08 -=================== - - * Fix JSON strict violation error to match native parse error - * Include the `body` property on verify errors - * Include the `type` property on all generated errors - * Use `http-errors` to set status code on errors - * deps: bytes@3.0.0 - * deps: debug@2.6.8 - * deps: depd@~1.1.1 - - Remove unnecessary `Buffer` loading - * deps: http-errors@~1.6.2 - - deps: depd@1.1.1 - * deps: iconv-lite@0.4.18 - - Add support for React Native - - Add a warning if not loaded as utf-8 - - Fix CESU-8 decoding in Node.js 8 - - Improve speed of ISO-8859-1 encoding - * deps: qs@6.5.0 - * deps: raw-body@2.3.1 - - Use `http-errors` for standard emitted errors - - deps: bytes@3.0.0 - - deps: iconv-lite@0.4.18 - - perf: skip buffer decoding on overage chunk - * perf: prevent internal `throw` when missing charset - -1.17.2 / 2017-05-17 -=================== - - * deps: debug@2.6.7 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@2.0.0 - * deps: type-is@~1.6.15 - - deps: mime-types@~2.1.15 - -1.17.1 / 2017-03-06 -=================== - - * deps: qs@6.4.0 - - Fix regression parsing keys starting with `[` - -1.17.0 / 2017-03-01 -=================== - - * deps: http-errors@~1.6.1 - - Make `message` property enumerable for `HttpError`s - - deps: setprototypeof@1.0.3 - * deps: qs@6.3.1 - - Fix compacting nested arrays - -1.16.1 / 2017-02-10 -=================== - - * deps: debug@2.6.1 - - Fix deprecation messages in WebStorm and other editors - - Undeprecate `DEBUG_FD` set to `1` or `2` - -1.16.0 / 2017-01-17 -=================== - - * deps: debug@2.6.0 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: http-errors@~1.5.1 - - deps: inherits@2.0.3 - - deps: setprototypeof@1.0.2 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - * deps: qs@6.2.1 - - Fix array parsing from skipping empty values - * deps: raw-body@~2.2.0 - - deps: iconv-lite@0.4.15 - * deps: type-is@~1.6.14 - - deps: mime-types@~2.1.13 - -1.15.2 / 2016-06-19 -=================== - - * deps: bytes@2.4.0 - * deps: content-type@~1.0.2 - - perf: enable strict mode - * deps: http-errors@~1.5.0 - - Use `setprototypeof` module to replace `__proto__` setting - - deps: statuses@'>= 1.3.0 < 2' - - perf: enable strict mode - * deps: qs@6.2.0 - * deps: raw-body@~2.1.7 - - deps: bytes@2.4.0 - - perf: remove double-cleanup on happy path - * deps: type-is@~1.6.13 - - deps: mime-types@~2.1.11 - -1.15.1 / 2016-05-05 -=================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - * deps: raw-body@~2.1.6 - - deps: bytes@2.3.0 - * deps: type-is@~1.6.12 - - deps: mime-types@~2.1.10 - -1.15.0 / 2016-02-10 -=================== - - * deps: http-errors@~1.4.0 - - Add `HttpError` export, for `err instanceof createError.HttpError` - - deps: inherits@2.0.1 - - deps: statuses@'>= 1.2.1 < 2' - * deps: qs@6.1.0 - * deps: type-is@~1.6.11 - - deps: mime-types@~2.1.9 - -1.14.2 / 2015-12-16 -=================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - * deps: qs@5.2.0 - * deps: raw-body@~2.1.5 - - deps: bytes@2.2.0 - - deps: iconv-lite@0.4.13 - * deps: type-is@~1.6.10 - - deps: mime-types@~2.1.8 - -1.14.1 / 2015-09-27 -=================== - - * Fix issue where invalid charset results in 400 when `verify` used - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - * deps: raw-body@~2.1.4 - - Fix masking critical errors from `iconv-lite` - - deps: iconv-lite@0.4.12 - * deps: type-is@~1.6.9 - - deps: mime-types@~2.1.7 - -1.14.0 / 2015-09-16 -=================== - - * Fix JSON strict parse error to match syntax errors - * Provide static `require` analysis in `urlencoded` parser - * deps: depd@~1.1.0 - - Support web browser loading - * deps: qs@5.1.0 - * deps: raw-body@~2.1.3 - - Fix sync callback when attaching data listener causes sync read - * deps: type-is@~1.6.8 - - Fix type error when given invalid type to match against - - deps: mime-types@~2.1.6 - -1.13.3 / 2015-07-31 -=================== - - * deps: type-is@~1.6.6 - - deps: mime-types@~2.1.4 - -1.13.2 / 2015-07-05 -=================== - - * deps: iconv-lite@0.4.11 - * deps: qs@4.0.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix user-visible incompatibilities from 3.1.0 - - Fix various parsing edge cases - * deps: raw-body@~2.1.2 - - Fix error stack traces to skip `makeError` - - deps: iconv-lite@0.4.11 - * deps: type-is@~1.6.4 - - deps: mime-types@~2.1.2 - - perf: enable strict mode - - perf: remove argument reassignment - -1.13.1 / 2015-06-16 -=================== - - * deps: qs@2.4.2 - - Downgraded from 3.1.0 because of user-visible incompatibilities - -1.13.0 / 2015-06-14 -=================== - - * Add `statusCode` property on `Error`s, in addition to `status` - * Change `type` default to `application/json` for JSON parser - * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser - * Provide static `require` analysis - * Use the `http-errors` module to generate errors - * deps: bytes@2.1.0 - - Slight optimizations - * deps: iconv-lite@0.4.10 - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - - Leading BOM is now removed when decoding - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * deps: qs@3.1.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix various parsing edge cases - - Parsed object now has `null` prototype - * deps: raw-body@~2.1.1 - - Use `unpipe` module for unpiping requests - - deps: iconv-lite@0.4.10 - * deps: type-is@~1.6.3 - - deps: mime-types@~2.1.1 - - perf: reduce try block size - - perf: remove bitwise operations - * perf: enable strict mode - * perf: remove argument reassignment - * perf: remove delete call - -1.12.4 / 2015-05-10 -=================== - - * deps: debug@~2.2.0 - * deps: qs@2.4.2 - - Fix allowing parameters like `constructor` - * deps: on-finished@~2.2.1 - * deps: raw-body@~2.0.1 - - Fix a false-positive when unpiping in Node.js 0.8 - - deps: bytes@2.0.1 - * deps: type-is@~1.6.2 - - deps: mime-types@~2.0.11 - -1.12.3 / 2015-04-15 -=================== - - * Slight efficiency improvement when not debugging - * deps: depd@~1.0.1 - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - * deps: raw-body@1.3.4 - - Fix hanging callback if request aborts during read - - deps: iconv-lite@0.4.8 - -1.12.2 / 2015-03-16 -=================== - - * deps: qs@2.4.1 - - Fix error when parameter `hasOwnProperty` is present - -1.12.1 / 2015-03-15 -=================== - - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: type-is@~1.6.1 - - deps: mime-types@~2.0.10 - -1.12.0 / 2015-02-13 -=================== - - * add `debug` messages - * accept a function for the `type` option - * use `content-type` to parse `Content-Type` headers - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - * deps: raw-body@1.3.3 - - deps: iconv-lite@0.4.7 - * deps: type-is@~1.6.0 - - fix argument reassignment - - fix false-positives in `hasBody` `Transfer-Encoding` check - - support wildcard for both type and subtype (`*/*`) - - deps: mime-types@~2.0.9 - -1.11.0 / 2015-01-30 -=================== - - * make internal `extended: true` depth limit infinity - * deps: type-is@~1.5.6 - - deps: mime-types@~2.0.8 - -1.10.2 / 2015-01-20 -=================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - * deps: raw-body@1.3.2 - - deps: iconv-lite@0.4.6 - -1.10.1 / 2015-01-01 -=================== - - * deps: on-finished@~2.2.0 - * deps: type-is@~1.5.5 - - deps: mime-types@~2.0.7 - -1.10.0 / 2014-12-02 -=================== - - * make internal `extended: true` array limit dynamic - -1.9.3 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - * deps: raw-body@1.3.1 - - deps: iconv-lite@0.4.5 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -1.9.2 / 2014-10-27 -================== - - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -1.9.1 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -1.9.0 / 2014-09-24 -================== - - * include the charset in "unsupported charset" error message - * include the encoding in "unsupported content encoding" error message - * deps: depd@~1.0.0 - -1.8.4 / 2014-09-23 -================== - - * fix content encoding to be case-insensitive - -1.8.3 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -1.8.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - -1.8.1 / 2014-09-07 -================== - - * deps: media-typer@0.3.0 - * deps: type-is@~1.5.1 - -1.8.0 / 2014-09-05 -================== - - * make empty-body-handling consistent between chunked requests - - empty `json` produces `{}` - - empty `raw` produces `new Buffer(0)` - - empty `text` produces `''` - - empty `urlencoded` produces `{}` - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: type-is@~1.5.0 - - fix `hasbody` to be true for `content-length: 0` - -1.7.0 / 2014-09-01 -================== - - * add `parameterLimit` option to `urlencoded` parser - * change `urlencoded` extended array limit to 100 - * respond with 413 when over `parameterLimit` in `urlencoded` - -1.6.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -1.6.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -1.6.5 / 2014-08-16 -================== - - * deps: on-finished@2.1.0 - -1.6.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - -1.6.3 / 2014-08-10 -================== - - * deps: qs@1.2.1 - -1.6.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -1.6.1 / 2014-08-06 -================== - - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -1.6.0 / 2014-08-05 -================== - - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - -1.5.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -1.5.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -1.5.0 / 2014-07-20 -================== - - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - * deps: raw-body@1.3.0 - - deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - - Fix `Cannot switch to old mode now` error on Node.js 0.10+ - * deps: type-is@~1.3.2 - -1.4.3 / 2014-06-19 -================== - - * deps: type-is@1.3.1 - - fix global variable leak - -1.4.2 / 2014-06-19 -================== - - * deps: type-is@1.3.0 - - improve type parsing - -1.4.1 / 2014-06-19 -================== - - * fix urlencoded extended deprecation message - -1.4.0 / 2014-06-19 -================== - - * add `text` parser - * add `raw` parser - * check accepted charset in content-type (accepts utf-8) - * check accepted encoding in content-encoding (accepts identity) - * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed - * deprecate `urlencoded()` without provided `extended` option - * lazy-load urlencoded parsers - * parsers split into files for reduced mem usage - * support gzip and deflate bodies - - set `inflate: false` to turn off - * deps: raw-body@1.2.2 - - Support all encodings from `iconv-lite` - -1.3.1 / 2014-06-11 -================== - - * deps: type-is@1.2.1 - - Switch dependency from mime to mime-types@1.0.0 - -1.3.0 / 2014-05-31 -================== - - * add `extended` option to urlencoded parser - -1.2.2 / 2014-05-27 -================== - - * deps: raw-body@1.1.6 - - assert stream encoding on node.js 0.8 - - assert stream encoding on node.js < 0.10.6 - - deps: bytes@1 - -1.2.1 / 2014-05-26 -================== - - * invoke `next(err)` after request fully read - - prevents hung responses and socket hang ups - -1.2.0 / 2014-05-11 -================== - - * add `verify` option - * deps: type-is@1.2.0 - - support suffix matching - -1.1.2 / 2014-05-11 -================== - - * improve json parser speed - -1.1.1 / 2014-05-11 -================== - - * fix repeated limit parsing with every request - -1.1.0 / 2014-05-10 -================== - - * add `type` option - * deps: pin for safety and consistency - -1.0.2 / 2014-04-14 -================== - - * use `type-is` module - -1.0.1 / 2014-03-20 -================== - - * lower default limits to 100kb diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/LICENSE deleted file mode 100644 index 386b7b6..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/README.md deleted file mode 100644 index 9fcd4c6..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/README.md +++ /dev/null @@ -1,491 +0,0 @@ -# body-parser - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] - -Node.js body parsing middleware. - -Parse incoming request bodies in a middleware before your handlers, available -under the `req.body` property. - -**Note** As `req.body`'s shape is based on user-controlled input, all -properties and values in this object are untrusted and should be validated -before trusting. For example, `req.body.foo.toString()` may fail in multiple -ways, for example the `foo` property may not be there or may not be a string, -and `toString` may not be a function and instead a string or other user input. - -[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). - -_This does not handle multipart bodies_, due to their complex and typically -large nature. For multipart bodies, you may be interested in the following -modules: - - * [busboy](https://www.npmjs.org/package/busboy#readme) and - [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) - * [multiparty](https://www.npmjs.org/package/multiparty#readme) and - [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) - * [formidable](https://www.npmjs.org/package/formidable#readme) - * [multer](https://www.npmjs.org/package/multer#readme) - -This module provides the following parsers: - - * [JSON body parser](#bodyparserjsonoptions) - * [Raw body parser](#bodyparserrawoptions) - * [Text body parser](#bodyparsertextoptions) - * [URL-encoded form body parser](#bodyparserurlencodedoptions) - -Other body parsers you might be interested in: - -- [body](https://www.npmjs.org/package/body#readme) -- [co-body](https://www.npmjs.org/package/co-body#readme) - -## Installation - -```sh -$ npm install body-parser -``` - -## API - -```js -const bodyParser = require('body-parser') -``` - -The `bodyParser` object exposes various factories to create middlewares. All -middlewares will populate the `req.body` property with the parsed body when -the `Content-Type` request header matches the `type` option. - -The various errors returned by this module are described in the -[errors section](#errors). - -### bodyParser.json([options]) - -Returns middleware that only parses `json` and only looks at requests where -the `Content-Type` header matches the `type` option. This parser accepts any -Unicode encoding of the body and supports automatic inflation of `gzip`, -`br` (brotli) and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). - -#### Options - -The `json` function takes an optional `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### reviver - -The `reviver` option is passed directly to `JSON.parse` as the second -argument. You can find more information on this argument -[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). - -##### strict - -When set to `true`, will only accept arrays and objects; when `false` will -accept anything `JSON.parse` accepts. Defaults to `true`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not a -function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `json`), a mime type (like `application/json`), or -a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` -option is called as `fn(req)` and the request is parsed if it returns a truthy -value. Defaults to `application/json`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.raw([options]) - -Returns middleware that parses all bodies as a `Buffer` and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` -encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a `Buffer` object -of the body. - -#### Options - -The `raw` function takes an optional `options` object that may contain any of -the following keys: - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. -If not a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this -can be an extension name (like `bin`), a mime type (like -`application/octet-stream`), or a mime type with a wildcard (like `*/*` or -`application/*`). If a function, the `type` option is called as `fn(req)` -and the request is parsed if it returns a truthy value. Defaults to -`application/octet-stream`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.text([options]) - -Returns middleware that parses all bodies as a string and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` -encodings. - -A new `body` string containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This will be a string of the -body. - -#### Options - -The `text` function takes an optional `options` object that may contain any of -the following keys: - -##### defaultCharset - -Specify the default character set for the text content if the charset is not -specified in the `Content-Type` header of the request. Defaults to `utf-8`. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not -a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `txt`), a mime type (like `text/plain`), or a mime -type with a wildcard (like `*/*` or `text/*`). If a function, the `type` -option is called as `fn(req)` and the request is parsed if it returns a -truthy value. Defaults to `text/plain`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -### bodyParser.urlencoded([options]) - -Returns middleware that only parses `urlencoded` bodies and only looks at -requests where the `Content-Type` header matches the `type` option. This -parser accepts only UTF-8 encoding of the body and supports automatic -inflation of `gzip`, `br` (brotli) and `deflate` encodings. - -A new `body` object containing the parsed data is populated on the `request` -object after the middleware (i.e. `req.body`). This object will contain -key-value pairs, where the value can be a string or array (when `extended` is -`false`), or any type (when `extended` is `true`). - -#### Options - -The `urlencoded` function takes an optional `options` object that may contain -any of the following keys: - -##### extended - -The "extended" syntax allows for rich objects and arrays to be encoded into the -URL-encoded format, allowing for a JSON-like experience with URL-encoded. For -more information, please [see the qs -library](https://www.npmjs.org/package/qs#readme). - -Defaults to `false`. - -##### inflate - -When set to `true`, then deflated (compressed) bodies will be inflated; when -`false`, deflated bodies are rejected. Defaults to `true`. - -##### limit - -Controls the maximum request body size. If this is a number, then the value -specifies the number of bytes; if it is a string, the value is passed to the -[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults -to `'100kb'`. - -##### parameterLimit - -The `parameterLimit` option controls the maximum number of parameters that -are allowed in the URL-encoded data. If a request contains more parameters -than this value, a 413 will be returned to the client. Defaults to `1000`. - -##### type - -The `type` option is used to determine what media type the middleware will -parse. This option can be a string, array of strings, or a function. If not -a function, `type` option is passed directly to the -[type-is](https://www.npmjs.org/package/type-is#readme) library and this can -be an extension name (like `urlencoded`), a mime type (like -`application/x-www-form-urlencoded`), or a mime type with a wildcard (like -`*/x-www-form-urlencoded`). If a function, the `type` option is called as -`fn(req)` and the request is parsed if it returns a truthy value. Defaults -to `application/x-www-form-urlencoded`. - -##### verify - -The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, -where `buf` is a `Buffer` of the raw request body and `encoding` is the -encoding of the request. The parsing can be aborted by throwing an error. - -##### defaultCharset - -The default charset to parse as, if not specified in content-type. Must be -either `utf-8` or `iso-8859-1`. Defaults to `utf-8`. - -##### charsetSentinel - -Whether to let the value of the `utf8` parameter take precedence as the charset -selector. It requires the form to contain a parameter named `utf8` with a value -of `✓`. Defaults to `false`. - -##### interpretNumericEntities - -Whether to decode numeric entities such as `☺` when parsing an iso-8859-1 -form. Defaults to `false`. - - -#### depth - -The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. - -## Errors - -The middlewares provided by this module create errors using the -[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors -will typically have a `status`/`statusCode` property that contains the suggested -HTTP response code, an `expose` property to determine if the `message` property -should be displayed to the client, a `type` property to determine the type of -error without matching against the `message`, and a `body` property containing -the read body, if available. - -The following are the common errors created, though any error can come through -for various reasons. - -### content encoding unsupported - -This error will occur when the request had a `Content-Encoding` header that -contained an encoding but the "inflation" option was set to `false`. The -`status` property is set to `415`, the `type` property is set to -`'encoding.unsupported'`, and the `charset` property will be set to the -encoding that is unsupported. - -### entity parse failed - -This error will occur when the request contained an entity that could not be -parsed by the middleware. The `status` property is set to `400`, the `type` -property is set to `'entity.parse.failed'`, and the `body` property is set to -the entity value that failed parsing. - -### entity verify failed - -This error will occur when the request contained an entity that could not be -failed verification by the defined `verify` option. The `status` property is -set to `403`, the `type` property is set to `'entity.verify.failed'`, and the -`body` property is set to the entity value that failed verification. - -### request aborted - -This error will occur when the request is aborted by the client before reading -the body has finished. The `received` property will be set to the number of -bytes received before the request was aborted and the `expected` property is -set to the number of expected bytes. The `status` property is set to `400` -and `type` property is set to `'request.aborted'`. - -### request entity too large - -This error will occur when the request body's size is larger than the "limit" -option. The `limit` property will be set to the byte limit and the `length` -property will be set to the request body's length. The `status` property is -set to `413` and the `type` property is set to `'entity.too.large'`. - -### request size did not match content length - -This error will occur when the request's length did not match the length from -the `Content-Length` header. This typically occurs when the request is malformed, -typically when the `Content-Length` header was calculated based on characters -instead of bytes. The `status` property is set to `400` and the `type` property -is set to `'request.size.invalid'`. - -### stream encoding should not be set - -This error will occur when something called the `req.setEncoding` method prior -to this middleware. This module operates directly on bytes only and you cannot -call `req.setEncoding` when using this module. The `status` property is set to -`500` and the `type` property is set to `'stream.encoding.set'`. - -### stream is not readable - -This error will occur when the request is no longer readable when this middleware -attempts to read it. This typically means something other than a middleware from -this module read the request body already and the middleware was also configured to -read the same request. The `status` property is set to `500` and the `type` -property is set to `'stream.not.readable'`. - -### too many parameters - -This error will occur when the content of the request exceeds the configured -`parameterLimit` for the `urlencoded` parser. The `status` property is set to -`413` and the `type` property is set to `'parameters.too.many'`. - -### unsupported charset "BOGUS" - -This error will occur when the request had a charset parameter in the -`Content-Type` header, but the `iconv-lite` module does not support it OR the -parser does not support it. The charset is contained in the message as well -as in the `charset` property. The `status` property is set to `415`, the -`type` property is set to `'charset.unsupported'`, and the `charset` property -is set to the charset that is unsupported. - -### unsupported content encoding "bogus" - -This error will occur when the request had a `Content-Encoding` header that -contained an unsupported encoding. The encoding is contained in the message -as well as in the `encoding` property. The `status` property is set to `415`, -the `type` property is set to `'encoding.unsupported'`, and the `encoding` -property is set to the encoding that is unsupported. - -### The input exceeded the depth - -This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown. - -## Examples - -### Express/Connect top-level generic - -This example demonstrates adding a generic JSON and URL-encoded parser as a -top-level middleware, which will parse the bodies of all incoming requests. -This is the simplest setup. - -```js -const express = require('express') -const bodyParser = require('body-parser') - -const app = express() - -// parse application/x-www-form-urlencoded -app.use(bodyParser.urlencoded()) - -// parse application/json -app.use(bodyParser.json()) - -app.use(function (req, res) { - res.setHeader('Content-Type', 'text/plain') - res.write('you posted:\n') - res.end(String(JSON.stringify(req.body, null, 2))) -}) -``` - -### Express route-specific - -This example demonstrates adding body parsers specifically to the routes that -need them. In general, this is the most recommended way to use body-parser with -Express. - -```js -const express = require('express') -const bodyParser = require('body-parser') - -const app = express() - -// create application/json parser -const jsonParser = bodyParser.json() - -// create application/x-www-form-urlencoded parser -const urlencodedParser = bodyParser.urlencoded() - -// POST /login gets urlencoded bodies -app.post('/login', urlencodedParser, function (req, res) { - if (!req.body || !req.body.username) res.sendStatus(400) - res.send('welcome, ' + req.body.username) -}) - -// POST /api/users gets JSON bodies -app.post('/api/users', jsonParser, function (req, res) { - if (!req.body) res.sendStatus(400) - // create user in req.body -}) -``` - -### Change accepted type for parsers - -All the parsers accept a `type` option which allows you to change the -`Content-Type` that the middleware will parse. - -```js -const express = require('express') -const bodyParser = require('body-parser') - -const app = express() - -// parse various different custom JSON types as JSON -app.use(bodyParser.json({ type: 'application/*+json' })) - -// parse some custom thing into a Buffer -app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) - -// parse an HTML body into a string -app.use(bodyParser.text({ type: 'text/html' })) -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/expressjs/body-parser/master?label=ci -[ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/body-parser/master -[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master -[node-version-image]: https://badgen.net/npm/node/body-parser -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/body-parser -[npm-url]: https://npmjs.org/package/body-parser -[npm-version-image]: https://badgen.net/npm/v/body-parser -[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge -[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/index.js deleted file mode 100644 index d722d0b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/index.js +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * @typedef Parsers - * @type {function} - * @property {function} json - * @property {function} raw - * @property {function} text - * @property {function} urlencoded - */ - -/** - * Module exports. - * @type {Parsers} - */ - -exports = module.exports = bodyParser - -/** - * JSON parser. - * @public - */ - -Object.defineProperty(exports, 'json', { - configurable: true, - enumerable: true, - get: () => require('./lib/types/json') -}) - -/** - * Raw parser. - * @public - */ - -Object.defineProperty(exports, 'raw', { - configurable: true, - enumerable: true, - get: () => require('./lib/types/raw') -}) - -/** - * Text parser. - * @public - */ - -Object.defineProperty(exports, 'text', { - configurable: true, - enumerable: true, - get: () => require('./lib/types/text') -}) - -/** - * URL-encoded parser. - * @public - */ - -Object.defineProperty(exports, 'urlencoded', { - configurable: true, - enumerable: true, - get: () => require('./lib/types/urlencoded') -}) - -/** - * Create a middleware to parse json and urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @deprecated - * @public - */ - -function bodyParser () { - throw new Error('The bodyParser() generic has been split into individual middleware to use instead.') -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/read.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/read.js deleted file mode 100644 index eee8b11..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/read.js +++ /dev/null @@ -1,210 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var getBody = require('raw-body') -var iconv = require('iconv-lite') -var onFinished = require('on-finished') -var zlib = require('node:zlib') - -/** - * Module exports. - */ - -module.exports = read - -/** - * Read a request into a buffer and parse. - * - * @param {object} req - * @param {object} res - * @param {function} next - * @param {function} parse - * @param {function} debug - * @param {object} options - * @private - */ - -function read (req, res, next, parse, debug, options) { - var length - var opts = options - var stream - - // read options - var encoding = opts.encoding !== null - ? opts.encoding - : null - var verify = opts.verify - - try { - // get the content stream - stream = contentstream(req, debug, opts.inflate) - length = stream.length - stream.length = undefined - } catch (err) { - return next(err) - } - - // set raw-body options - opts.length = length - opts.encoding = verify - ? null - : encoding - - // assert charset is supported - if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { - return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase(), - type: 'charset.unsupported' - })) - } - - // read body - debug('read body') - getBody(stream, opts, function (error, body) { - if (error) { - var _error - - if (error.type === 'encoding.unsupported') { - // echo back charset - _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { - charset: encoding.toLowerCase(), - type: 'charset.unsupported' - }) - } else { - // set status code on error - _error = createError(400, error) - } - - // unpipe from stream and destroy - if (stream !== req) { - req.unpipe() - stream.destroy() - } - - // read off entire request - dump(req, function onfinished () { - next(createError(400, _error)) - }) - return - } - - // verify - if (verify) { - try { - debug('verify body') - verify(req, res, body, encoding) - } catch (err) { - next(createError(403, err, { - body: body, - type: err.type || 'entity.verify.failed' - })) - return - } - } - - // parse - var str = body - try { - debug('parse body') - str = typeof body !== 'string' && encoding !== null - ? iconv.decode(body, encoding) - : body - req.body = parse(str, encoding) - } catch (err) { - next(createError(400, err, { - body: str, - type: err.type || 'entity.parse.failed' - })) - return - } - - next() - }) -} - -/** - * Get the content stream of the request. - * - * @param {object} req - * @param {function} debug - * @param {boolean} [inflate=true] - * @return {object} - * @api private - */ - -function contentstream (req, debug, inflate) { - var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() - var length = req.headers['content-length'] - - debug('content-encoding "%s"', encoding) - - if (inflate === false && encoding !== 'identity') { - throw createError(415, 'content encoding unsupported', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } - - if (encoding === 'identity') { - req.length = length - return req - } - - var stream = createDecompressionStream(encoding, debug) - req.pipe(stream) - return stream -} - -/** - * Create a decompression stream for the given encoding. - * @param {string} encoding - * @param {function} debug - * @return {object} - * @api private - */ -function createDecompressionStream (encoding, debug) { - switch (encoding) { - case 'deflate': - debug('inflate body') - return zlib.createInflate() - case 'gzip': - debug('gunzip body') - return zlib.createGunzip() - case 'br': - debug('brotli decompress body') - return zlib.createBrotliDecompress() - default: - throw createError(415, 'unsupported content encoding "' + encoding + '"', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } -} - -/** - * Dump the contents of a request. - * - * @param {object} req - * @param {function} callback - * @api private - */ - -function dump (req, callback) { - if (onFinished.isFinished(req)) { - callback(null) - } else { - onFinished(req, callback) - req.resume() - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/json.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/json.js deleted file mode 100644 index 078ce71..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/json.js +++ /dev/null @@ -1,206 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var debug = require('debug')('body-parser:json') -var isFinished = require('on-finished').isFinished -var read = require('../read') -var typeis = require('type-is') -var { getCharset, normalizeOptions } = require('../utils') - -/** - * Module exports. - */ - -module.exports = json - -/** - * RegExp to match the first non-space in a string. - * - * Allowed whitespace is defined in RFC 7159: - * - * ws = *( - * %x20 / ; Space - * %x09 / ; Horizontal tab - * %x0A / ; Line feed or New line - * %x0D ) ; Carriage return - */ - -var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex - -var JSON_SYNTAX_CHAR = '#' -var JSON_SYNTAX_REGEXP = /#+/g - -/** - * Create a middleware to parse JSON bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function json (options) { - var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/json') - - var reviver = options?.reviver - var strict = options?.strict !== false - - function parse (body) { - if (body.length === 0) { - // special-case empty json body, as it's a common client-side mistake - // TODO: maybe make this configurable or part of "strict" option - return {} - } - - if (strict) { - var first = firstchar(body) - - if (first !== '{' && first !== '[') { - debug('strict violation') - throw createStrictSyntaxError(body, first) - } - } - - try { - debug('parse json') - return JSON.parse(body, reviver) - } catch (e) { - throw normalizeJsonSyntaxError(e, { - message: e.message, - stack: e.stack - }) - } - } - - return function jsonParser (req, res, next) { - if (isFinished(req)) { - debug('body already parsed') - next() - return - } - - if (!('body' in req)) { - req.body = undefined - } - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset per RFC 7159 sec 8.1 - var charset = getCharset(req) || 'utf-8' - if (charset.slice(0, 4) !== 'utf-') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset, - type: 'charset.unsupported' - })) - return - } - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate, - limit, - verify - }) - } -} - -/** - * Create strict violation syntax error matching native error. - * - * @param {string} str - * @param {string} char - * @return {Error} - * @private - */ - -function createStrictSyntaxError (str, char) { - var index = str.indexOf(char) - var partial = '' - - if (index !== -1) { - partial = str.substring(0, index) + JSON_SYNTAX_CHAR - - for (var i = index + 1; i < str.length; i++) { - partial += JSON_SYNTAX_CHAR - } - } - - try { - JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') - } catch (e) { - return normalizeJsonSyntaxError(e, { - message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) { - return str.substring(index, index + placeholder.length) - }), - stack: e.stack - }) - } -} - -/** - * Get the first non-whitespace character in a string. - * - * @param {string} str - * @return {function} - * @private - */ - -function firstchar (str) { - var match = FIRST_CHAR_REGEXP.exec(str) - - return match - ? match[1] - : undefined -} - -/** - * Normalize a SyntaxError for JSON.parse. - * - * @param {SyntaxError} error - * @param {object} obj - * @return {SyntaxError} - */ - -function normalizeJsonSyntaxError (error, obj) { - var keys = Object.getOwnPropertyNames(error) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - if (key !== 'stack' && key !== 'message') { - delete error[key] - } - } - - // replace stack before message for Node.js 0.10 and below - error.stack = obj.stack.replace(error.message, obj.message) - error.message = obj.message - - return error -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/raw.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/raw.js deleted file mode 100644 index 3788ff2..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/raw.js +++ /dev/null @@ -1,75 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var debug = require('debug')('body-parser:raw') -var isFinished = require('on-finished').isFinished -var read = require('../read') -var typeis = require('type-is') -var { normalizeOptions } = require('../utils') - -/** - * Module exports. - */ - -module.exports = raw - -/** - * Create a middleware to parse raw bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function raw (options) { - var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/octet-stream') - - function parse (buf) { - return buf - } - - return function rawParser (req, res, next) { - if (isFinished(req)) { - debug('body already parsed') - next() - return - } - - if (!('body' in req)) { - req.body = undefined - } - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // read - read(req, res, next, parse, debug, { - encoding: null, - inflate, - limit, - verify - }) - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/text.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/text.js deleted file mode 100644 index 3e0ab1b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/text.js +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - */ - -var debug = require('debug')('body-parser:text') -var isFinished = require('on-finished').isFinished -var read = require('../read') -var typeis = require('type-is') -var { getCharset, normalizeOptions } = require('../utils') - -/** - * Module exports. - */ - -module.exports = text - -/** - * Create a middleware to parse text bodies. - * - * @param {object} [options] - * @return {function} - * @api public - */ - -function text (options) { - var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'text/plain') - - var defaultCharset = options?.defaultCharset || 'utf-8' - - function parse (buf) { - return buf - } - - return function textParser (req, res, next) { - if (isFinished(req)) { - debug('body already parsed') - next() - return - } - - if (!('body' in req)) { - req.body = undefined - } - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // get charset - var charset = getCharset(req) || defaultCharset - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate, - limit, - verify - }) - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/urlencoded.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/urlencoded.js deleted file mode 100644 index f993425..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/types/urlencoded.js +++ /dev/null @@ -1,177 +0,0 @@ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var debug = require('debug')('body-parser:urlencoded') -var isFinished = require('on-finished').isFinished -var read = require('../read') -var typeis = require('type-is') -var qs = require('qs') -var { getCharset, normalizeOptions } = require('../utils') - -/** - * Module exports. - */ - -module.exports = urlencoded - -/** - * Create a middleware to parse urlencoded bodies. - * - * @param {object} [options] - * @return {function} - * @public - */ - -function urlencoded (options) { - var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/x-www-form-urlencoded') - - var defaultCharset = options?.defaultCharset || 'utf-8' - if (defaultCharset !== 'utf-8' && defaultCharset !== 'iso-8859-1') { - throw new TypeError('option defaultCharset must be either utf-8 or iso-8859-1') - } - - // create the appropriate query parser - var queryparse = createQueryParser(options) - - function parse (body, encoding) { - return body.length - ? queryparse(body, encoding) - : {} - } - - return function urlencodedParser (req, res, next) { - if (isFinished(req)) { - debug('body already parsed') - next() - return - } - - if (!('body' in req)) { - req.body = undefined - } - - // skip requests without bodies - if (!typeis.hasBody(req)) { - debug('skip empty body') - next() - return - } - - debug('content-type %j', req.headers['content-type']) - - // determine if request should be parsed - if (!shouldParse(req)) { - debug('skip parsing') - next() - return - } - - // assert charset - var charset = getCharset(req) || defaultCharset - if (charset !== 'utf-8' && charset !== 'iso-8859-1') { - debug('invalid charset') - next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { - charset: charset, - type: 'charset.unsupported' - })) - return - } - - // read - read(req, res, next, parse, debug, { - encoding: charset, - inflate, - limit, - verify - }) - } -} - -/** - * Get the extended query parser. - * - * @param {object} options - */ - -function createQueryParser (options) { - var extended = Boolean(options?.extended) - var parameterLimit = options?.parameterLimit !== undefined - ? options?.parameterLimit - : 1000 - var charsetSentinel = options?.charsetSentinel - var interpretNumericEntities = options?.interpretNumericEntities - var depth = extended ? (options?.depth !== undefined ? options?.depth : 32) : 0 - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isNaN(depth) || depth < 0) { - throw new TypeError('option depth must be a zero or a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body, encoding) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters', { - type: 'parameters.too.many' - }) - } - - var arrayLimit = extended ? Math.max(100, paramCount) : 0 - - debug('parse ' + (extended ? 'extended ' : '') + 'urlencoding') - try { - return qs.parse(body, { - allowPrototypes: true, - arrayLimit: arrayLimit, - depth: depth, - charsetSentinel: charsetSentinel, - interpretNumericEntities: interpretNumericEntities, - charset: encoding, - parameterLimit: parameterLimit, - strictDepth: true - }) - } catch (err) { - if (err instanceof RangeError) { - throw createError(400, 'The input exceeded the depth', { - type: 'querystring.parse.rangeError' - }) - } else { - throw err - } - } - } -} - -/** - * Count the number of parameters, stopping once limit reached - * - * @param {string} body - * @param {number} limit - * @api private - */ - -function parameterCount (body, limit) { - var len = body.split('&').length - - return len > limit ? undefined : len - 1 -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/utils.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/utils.js deleted file mode 100644 index eee5d95..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/lib/utils.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict' - -/** - * Module dependencies. - */ - -var bytes = require('bytes') -var contentType = require('content-type') -var typeis = require('type-is') - -/** - * Module exports. - */ - -module.exports = { - getCharset, - normalizeOptions -} - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch { - return undefined - } -} - -/** - * Get the simple type checker. - * - * @param {string | string[]} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} - -/** - * Normalizes the common options for all parsers. - * - * @param {object} options options to normalize - * @param {string | string[] | function} defaultType default content type(s) or a function to determine it - * @returns {object} - */ -function normalizeOptions (options, defaultType) { - if (!defaultType) { - // Parsers must define a default content type - throw new TypeError('defaultType must be provided') - } - - var inflate = options?.inflate !== false - var limit = typeof options?.limit !== 'number' - ? bytes.parse(options?.limit || '100kb') - : options?.limit - var type = options?.type || defaultType - var verify = options?.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - return { - inflate, - limit, - verify, - shouldParse - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/package.json deleted file mode 100644 index e7f763b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/body-parser/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "body-parser", - "description": "Node.js body parsing middleware", - "version": "2.2.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "expressjs/body-parser", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "devDependencies": { - "eslint": "8.34.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "^11.1.0", - "nyc": "^17.1.0", - "supertest": "^7.0.0" - }, - "files": [ - "lib/", - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">=18" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/HISTORY.md deleted file mode 100644 index ff0b68b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/HISTORY.md +++ /dev/null @@ -1,66 +0,0 @@ -1.0.0 / 2024-08-31 -================== - - * drop node <18 - * allow utf8 as alias for utf-8 - -0.5.4 / 2021-12-10 -================== - - * deps: safe-buffer@5.2.1 - -0.5.3 / 2018-12-17 -================== - - * Use `safe-buffer` for improved Buffer API - -0.5.2 / 2016-12-08 -================== - - * Fix `parse` to accept any linear whitespace character - -0.5.1 / 2016-01-17 -================== - - * perf: enable strict mode - -0.5.0 / 2014-10-11 -================== - - * Add `parse` function - -0.4.0 / 2014-09-21 -================== - - * Expand non-Unicode `filename` to the full ISO-8859-1 charset - -0.3.0 / 2014-09-20 -================== - - * Add `fallback` option - * Add `type` option - -0.2.0 / 2014-09-19 -================== - - * Reduce ambiguity of file names with hex escape in buggy browsers - -0.1.2 / 2014-09-19 -================== - - * Fix periodic invalid Unicode filename header - -0.1.1 / 2014-09-19 -================== - - * Fix invalid characters appearing in `filename*` parameter - -0.1.0 / 2014-09-18 -================== - - * Make the `filename` argument optional - -0.0.0 / 2014-09-18 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/LICENSE deleted file mode 100644 index 84441fb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/README.md deleted file mode 100644 index 3a0bb05..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# content-disposition - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Create and parse HTTP `Content-Disposition` header - -## Installation - -```sh -$ npm install content-disposition -``` - -## API - -```js -var contentDisposition = require('content-disposition') -``` - -### contentDisposition(filename, options) - -Create an attachment `Content-Disposition` header value using the given file name, -if supplied. The `filename` is optional and if no file name is desired, but you -want to specify `options`, set `filename` to `undefined`. - -```js -res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf')) -``` - -**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this -header through a means different from `setHeader` in Node.js, you'll want to specify -the `'binary'` encoding in Node.js. - -#### Options - -`contentDisposition` accepts these properties in the options object. - -##### fallback - -If the `filename` option is outside ISO-8859-1, then the file name is actually -stored in a supplemental field for clients that support Unicode file names and -a ISO-8859-1 version of the file name is automatically generated. - -This specifies the ISO-8859-1 file name to override the automatic generation or -disables the generation all together, defaults to `true`. - - - A string will specify the ISO-8859-1 file name to use in place of automatic - generation. - - `false` will disable including a ISO-8859-1 file name and only include the - Unicode version (unless the file name is already ISO-8859-1). - - `true` will enable automatic generation if the file name is outside ISO-8859-1. - -If the `filename` option is ISO-8859-1 and this option is specified and has a -different value, then the `filename` option is encoded in the extended field -and this set as the fallback field, even though they are both ISO-8859-1. - -##### type - -Specifies the disposition type, defaults to `"attachment"`. This can also be -`"inline"`, or any other value (all values except inline are treated like -`attachment`, but can convey additional information if both parties agree to -it). The type is normalized to lower-case. - -### contentDisposition.parse(string) - -```js -var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt') -``` - -Parse a `Content-Disposition` header string. This automatically handles extended -("Unicode") parameters by decoding them and providing them under the standard -parameter name. This will return an object with the following properties (examples -are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`): - - - `type`: The disposition type (always lower case). Example: `'attachment'` - - - `parameters`: An object of the parameters in the disposition (name of parameter - always lower case and extended versions replace non-extended versions). Example: - `{filename: "€ rates.txt"}` - -## Examples - -### Send a file for download - -```js -var contentDisposition = require('content-disposition') -var destroy = require('destroy') -var fs = require('fs') -var http = require('http') -var onFinished = require('on-finished') - -var filePath = '/path/to/public/plans.pdf' - -http.createServer(function onRequest (req, res) { - // set headers - res.setHeader('Content-Type', 'application/pdf') - res.setHeader('Content-Disposition', contentDisposition(filePath)) - - // send file - var stream = fs.createReadStream(filePath) - stream.pipe(res) - onFinished(res, function () { - destroy(stream) - }) -}) -``` - -## Testing - -```sh -$ npm test -``` - -## References - -- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616] -- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987] -- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266] -- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231] - -[rfc-2616]: https://tools.ietf.org/html/rfc2616 -[rfc-5987]: https://tools.ietf.org/html/rfc5987 -[rfc-6266]: https://tools.ietf.org/html/rfc6266 -[tc-2231]: http://greenbytes.de/tech/tc2231/ - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/content-disposition.svg -[npm-url]: https://npmjs.org/package/content-disposition -[node-version-image]: https://img.shields.io/node/v/content-disposition.svg -[node-version-url]: https://nodejs.org/en/download -[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg -[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master -[downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg -[downloads-url]: https://npmjs.org/package/content-disposition -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/content-disposition/ci/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/content-disposition?query=workflow%3Aci diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/index.js deleted file mode 100644 index 44f1d51..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/index.js +++ /dev/null @@ -1,459 +0,0 @@ -/*! - * content-disposition - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = contentDisposition -module.exports.parse = parse - -/** - * Module dependencies. - * @private - */ - -var basename = require('path').basename -var Buffer = require('safe-buffer').Buffer - -/** - * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%") - * @private - */ - -var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g // eslint-disable-line no-control-regex - -/** - * RegExp to match percent encoding escape. - * @private - */ - -var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/ -var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g - -/** - * RegExp to match non-latin1 characters. - * @private - */ - -var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - * @private - */ - -var QESC_REGEXP = /\\([\u0000-\u007f])/g // eslint-disable-line no-control-regex - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - * @private - */ - -var QUOTE_REGEXP = /([\\"])/g - -/** - * RegExp for various RFC 2616 grammar - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * HT = - * CTL = - * OCTET = - * @private - */ - -var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g // eslint-disable-line no-control-regex -var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/ -var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/ - -/** - * RegExp for various RFC 5987 grammar - * - * ext-value = charset "'" [ language ] "'" value-chars - * charset = "UTF-8" / "ISO-8859-1" / mime-charset - * mime-charset = 1*mime-charsetc - * mime-charsetc = ALPHA / DIGIT - * / "!" / "#" / "$" / "%" / "&" - * / "+" / "-" / "^" / "_" / "`" - * / "{" / "}" / "~" - * language = ( 2*3ALPHA [ extlang ] ) - * / 4ALPHA - * / 5*8ALPHA - * extlang = *3( "-" 3ALPHA ) - * value-chars = *( pct-encoded / attr-char ) - * pct-encoded = "%" HEXDIG HEXDIG - * attr-char = ALPHA / DIGIT - * / "!" / "#" / "$" / "&" / "+" / "-" / "." - * / "^" / "_" / "`" / "|" / "~" - * @private - */ - -var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/ - -/** - * RegExp for various RFC 6266 grammar - * - * disposition-type = "inline" | "attachment" | disp-ext-type - * disp-ext-type = token - * disposition-parm = filename-parm | disp-ext-parm - * filename-parm = "filename" "=" value - * | "filename*" "=" ext-value - * disp-ext-parm = token "=" value - * | ext-token "=" ext-value - * ext-token = - * @private - */ - -var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/ // eslint-disable-line no-control-regex - -/** - * Create an attachment Content-Disposition header. - * - * @param {string} [filename] - * @param {object} [options] - * @param {string} [options.type=attachment] - * @param {string|boolean} [options.fallback=true] - * @return {string} - * @public - */ - -function contentDisposition (filename, options) { - var opts = options || {} - - // get type - var type = opts.type || 'attachment' - - // get parameters - var params = createparams(filename, opts.fallback) - - // format into string - return format(new ContentDisposition(type, params)) -} - -/** - * Create parameters object from filename and fallback. - * - * @param {string} [filename] - * @param {string|boolean} [fallback=true] - * @return {object} - * @private - */ - -function createparams (filename, fallback) { - if (filename === undefined) { - return - } - - var params = {} - - if (typeof filename !== 'string') { - throw new TypeError('filename must be a string') - } - - // fallback defaults to true - if (fallback === undefined) { - fallback = true - } - - if (typeof fallback !== 'string' && typeof fallback !== 'boolean') { - throw new TypeError('fallback must be a string or boolean') - } - - if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) { - throw new TypeError('fallback must be ISO-8859-1 string') - } - - // restrict to file base name - var name = basename(filename) - - // determine if name is suitable for quoted string - var isQuotedString = TEXT_REGEXP.test(name) - - // generate fallback name - var fallbackName = typeof fallback !== 'string' - ? fallback && getlatin1(name) - : basename(fallback) - var hasFallback = typeof fallbackName === 'string' && fallbackName !== name - - // set extended filename parameter - if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { - params['filename*'] = name - } - - // set filename parameter - if (isQuotedString || hasFallback) { - params.filename = hasFallback - ? fallbackName - : name - } - - return params -} - -/** - * Format object to Content-Disposition header. - * - * @param {object} obj - * @param {string} obj.type - * @param {object} [obj.parameters] - * @return {string} - * @private - */ - -function format (obj) { - var parameters = obj.parameters - var type = obj.type - - if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) { - throw new TypeError('invalid type') - } - - // start with normalized type - var string = String(type).toLowerCase() - - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - var val = param.slice(-1) === '*' - ? ustring(parameters[param]) - : qstring(parameters[param]) - - string += '; ' + param + '=' + val - } - } - - return string -} - -/** - * Decode a RFC 5987 field value (gracefully). - * - * @param {string} str - * @return {string} - * @private - */ - -function decodefield (str) { - var match = EXT_VALUE_REGEXP.exec(str) - - if (!match) { - throw new TypeError('invalid extended field value') - } - - var charset = match[1].toLowerCase() - var encoded = match[2] - var value - - // to binary string - var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode) - - switch (charset) { - case 'iso-8859-1': - value = getlatin1(binary) - break - case 'utf-8': - case 'utf8': - value = Buffer.from(binary, 'binary').toString('utf8') - break - default: - throw new TypeError('unsupported charset in extended field') - } - - return value -} - -/** - * Get ISO-8859-1 version of string. - * - * @param {string} val - * @return {string} - * @private - */ - -function getlatin1 (val) { - // simple Unicode -> ISO-8859-1 transformation - return String(val).replace(NON_LATIN1_REGEXP, '?') -} - -/** - * Parse Content-Disposition header string. - * - * @param {string} string - * @return {object} - * @public - */ - -function parse (string) { - if (!string || typeof string !== 'string') { - throw new TypeError('argument string is required') - } - - var match = DISPOSITION_TYPE_REGEXP.exec(string) - - if (!match) { - throw new TypeError('invalid type format') - } - - // normalize type - var index = match[0].length - var type = match[1].toLowerCase() - - var key - var names = [] - var params = {} - var value - - // calculate index to start at - index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ';' - ? index - 1 - : index - - // match parameters - while ((match = PARAM_REGEXP.exec(string))) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (names.indexOf(key) !== -1) { - throw new TypeError('invalid duplicate parameter') - } - - names.push(key) - - if (key.indexOf('*') + 1 === key.length) { - // decode extended value - key = key.slice(0, -1) - value = decodefield(value) - - // overwrite existing value - params[key] = value - continue - } - - if (typeof params[key] === 'string') { - continue - } - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .slice(1, -1) - .replace(QESC_REGEXP, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - return new ContentDisposition(type, params) -} - -/** - * Percent decode a single character. - * - * @param {string} str - * @param {string} hex - * @return {string} - * @private - */ - -function pdecode (str, hex) { - return String.fromCharCode(parseInt(hex, 16)) -} - -/** - * Percent encode a single character. - * - * @param {string} char - * @return {string} - * @private - */ - -function pencode (char) { - return '%' + String(char) - .charCodeAt(0) - .toString(16) - .toUpperCase() -} - -/** - * Quote a string for HTTP. - * - * @param {string} val - * @return {string} - * @private - */ - -function qstring (val) { - var str = String(val) - - return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' -} - -/** - * Encode a Unicode string for HTTP (RFC 5987). - * - * @param {string} val - * @return {string} - * @private - */ - -function ustring (val) { - var str = String(val) - - // percent encode as UTF-8 - var encoded = encodeURIComponent(str) - .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode) - - return 'UTF-8\'\'' + encoded -} - -/** - * Class for parsed Content-Disposition header for v8 optimization - * - * @public - * @param {string} type - * @param {object} parameters - * @constructor - */ - -function ContentDisposition (type, parameters) { - this.type = type - this.parameters = parameters -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/package.json deleted file mode 100644 index 5cea50b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "content-disposition", - "description": "Create and parse Content-Disposition header", - "version": "1.0.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "keywords": [ - "content-disposition", - "http", - "rfc6266", - "res" - ], - "repository": "jshttp/content-disposition", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "devDependencies": { - "deep-equal": "1.0.1", - "eslint": "7.32.0", - "eslint-config-standard": "13.0.1", - "eslint-plugin-import": "2.25.3", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "^9.2.2", - "nyc": "15.1.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/History.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/History.md deleted file mode 100644 index 479211a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/History.md +++ /dev/null @@ -1,70 +0,0 @@ -1.2.2 / 2024-10-29 -================== - -* various metadata/documentation tweaks (incl. #51) - - -1.2.1 / 2023-02-27 -================== - -* update annotations for allowed secret key types (#44, thanks @jyasskin!) - - -1.2.0 / 2022-02-17 -================== - -* allow buffer and other node-supported types as key (#33) -* be pickier about extra content after signed portion (#40) -* some internal code clarity/cleanup improvements (#26) - - -1.1.0 / 2018-01-18 -================== - -* switch to built-in `crypto.timingSafeEqual` for validation instead of previous double-hash method (thank you @jodevsa!) - - -1.0.7 / 2023-04-12 -================== - -Later release for older node.js versions. See the [v1.0.x branch notes](https://github.com/tj/node-cookie-signature/blob/v1.0.x/History.md#107--2023-04-12). - - -1.0.6 / 2015-02-03 -================== - -* use `npm test` instead of `make test` to run tests -* clearer assertion messages when checking input - - -1.0.5 / 2014-09-05 -================== - -* add license to package.json - -1.0.4 / 2014-06-25 -================== - - * corrected avoidance of timing attacks (thanks @tenbits!) - -1.0.3 / 2014-01-28 -================== - - * [incorrect] fix for timing attacks - -1.0.2 / 2014-01-28 -================== - - * fix missing repository warning - * fix typo in test - -1.0.1 / 2013-04-15 -================== - - * Revert "Changed underlying HMAC algo. to sha512." - * Revert "Fix for timing attacks on MAC verification." - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/LICENSE deleted file mode 100644 index a2671bf..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012–2024 LearnBoost and other contributors; - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/Readme.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/Readme.md deleted file mode 100644 index 369af15..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/Readme.md +++ /dev/null @@ -1,23 +0,0 @@ - -# cookie-signature - - Sign and unsign cookies. - -## Example - -```js -var cookie = require('cookie-signature'); - -var val = cookie.sign('hello', 'tobiiscool'); -val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); - -var val = cookie.sign('hello', 'tobiiscool'); -cookie.unsign(val, 'tobiiscool').should.equal('hello'); -cookie.unsign(val, 'luna').should.be.false; -``` - -## License - -MIT. - -See LICENSE file for details. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/index.js deleted file mode 100644 index 3fbbddb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/index.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Module dependencies. - */ - -var crypto = require('crypto'); - -/** - * Sign the given `val` with `secret`. - * - * @param {String} val - * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret - * @return {String} - * @api private - */ - -exports.sign = function(val, secret){ - if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); - if (null == secret) throw new TypeError("Secret key must be provided."); - return val + '.' + crypto - .createHmac('sha256', secret) - .update(val) - .digest('base64') - .replace(/\=+$/, ''); -}; - -/** - * Unsign and decode the given `input` with `secret`, - * returning `false` if the signature is invalid. - * - * @param {String} input - * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret - * @return {String|Boolean} - * @api private - */ - -exports.unsign = function(input, secret){ - if ('string' != typeof input) throw new TypeError("Signed cookie string must be provided."); - if (null == secret) throw new TypeError("Secret key must be provided."); - var tentativeValue = input.slice(0, input.lastIndexOf('.')), - expectedInput = exports.sign(tentativeValue, secret), - expectedBuffer = Buffer.from(expectedInput), - inputBuffer = Buffer.from(input); - return ( - expectedBuffer.length === inputBuffer.length && - crypto.timingSafeEqual(expectedBuffer, inputBuffer) - ) ? tentativeValue : false; -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/package.json deleted file mode 100644 index a160040..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "cookie-signature", - "version": "1.2.2", - "main": "index.js", - "description": "Sign and unsign cookies", - "keywords": ["cookie", "sign", "unsign"], - "author": "TJ Holowaychuk ", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/node-cookie-signature.git" - }, - "dependencies": {}, - "engines": { - "node": ">=6.6.0" - }, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "scripts": { - "test": "mocha --require should --reporter spec" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/LICENSE deleted file mode 100644 index 1a9820e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/README.md deleted file mode 100644 index 9ebdfbf..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/README.md +++ /dev/null @@ -1,481 +0,0 @@ -# debug -[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny JavaScript debugging utility modelled after Node.js core's debugging -technique. Works in Node.js and web browsers. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example [_app.js_](./examples/node/app.js): - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %o', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example [_worker.js_](./examples/node/worker.js): - -```js -var a = require('debug')('worker:a') - , b = require('debug')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); -``` - -The `DEBUG` environment variable is then used to enable these based on space or -comma-delimited names. - -Here are some examples: - -screen shot 2017-08-08 at 12 53 04 pm -screen shot 2017-08-08 at 12 53 38 pm -screen shot 2017-08-08 at 12 53 25 pm - -#### Windows command prompt notes - -##### CMD - -On Windows the environment variable is set using the `set` command. - -```cmd -set DEBUG=*,-not_this -``` - -Example: - -```cmd -set DEBUG=* & node app.js -``` - -##### PowerShell (VS Code default) - -PowerShell uses different syntax to set environment variables. - -```cmd -$env:DEBUG = "*,-not_this" -``` - -Example: - -```cmd -$env:DEBUG='app';node app.js -``` - -Then, run the program to be debugged as usual. - -npm script example: -```js - "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", -``` - -## Namespace Colors - -Every debug instance has a color generated for it based on its namespace name. -This helps when visually parsing the debug output to identify which debug instance -a debug line belongs to. - -#### Node.js - -In Node.js, colors are enabled when stderr is a TTY. You also _should_ install -the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, -otherwise debug will only use a small handful of basic colors. - - - -#### Web Browser - -Colors are also enabled on "Web Inspectors" that understand the `%c` formatting -option. These are WebKit web inspectors, Firefox ([since version -31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) -and the Firebug plugin for Firefox (any version). - - - - -## Millisecond diff - -When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - - -When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: - - - - -## Conventions - -If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. - -## Wildcards - -The `*` character may be used as a wildcard. Suppose for example your library has -debuggers named "connect:bodyParser", "connect:compress", "connect:session", -instead of listing all three with -`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do -`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - -You can also exclude specific debuggers by prefixing them with a "-" character. -For example, `DEBUG=*,-connect:*` would include all debuggers except those -starting with "connect:". - -## Environment Variables - -When running through Node.js, you can set a few environment variables that will -change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - -__Note:__ The environment variables beginning with `DEBUG_` end up being -converted into an Options object that gets used with `%o`/`%O` formatters. -See the Node.js documentation for -[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) -for the complete list. - -## Formatters - -Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. -Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - - -### Custom formatters - -You can add custom formatters by extending the `debug.formatters` object. -For example, if you wanted to add support for rendering a Buffer as hex with -`%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// 
elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - - -## Browser Support - -You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), -or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), -if you don't want to build it yourself. - -Debug's enable state is currently persisted by `localStorage`. -Consider the situation shown below where you have `worker:a` and `worker:b`, -and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. - - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example [_stdout.js_](./examples/node/stdout.js): - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -## Extend -You can simply extend debugger -```js -const log = require('debug')('auth'); - -//creates new debug instance with extended namespace -const logSign = log.extend('sign'); -const logLogin = log.extend('login'); - -log('hello'); // auth hello -logSign('hello'); //auth:sign hello -logLogin('hello'); //auth:login hello -``` - -## Set dynamically - -You can also enable debug dynamically by calling the `enable()` method : - -```js -let debug = require('debug'); - -console.log(1, debug.enabled('test')); - -debug.enable('test'); -console.log(2, debug.enabled('test')); - -debug.disable(); -console.log(3, debug.enabled('test')); - -``` - -print : -``` -1 false -2 true -3 false -``` - -Usage : -`enable(namespaces)` -`namespaces` can include modes separated by a colon and wildcards. - -Note that calling `enable()` completely overrides previously set DEBUG variable : - -``` -$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' -=> false -``` - -`disable()` - -Will disable all namespaces. The functions returns the namespaces currently -enabled (and skipped). This can be useful if you want to disable debugging -temporarily without knowing what was enabled to begin with. - -For example: - -```js -let debug = require('debug'); -debug.enable('foo:*,-foo:bar'); -let namespaces = debug.disable(); -debug.enable(namespaces); -``` - -Note: There is no guarantee that the string will be identical to the initial -enable string, but semantically they will be identical. - -## Checking whether a debug target is enabled - -After you've created a debug instance, you can determine whether or not it is -enabled by checking the `enabled` property: - -```javascript -const debug = require('debug')('http'); - -if (debug.enabled) { - // do stuff... -} -``` - -You can also manually toggle this property to force the debug instance to be -enabled or disabled. - -## Usage in child processes - -Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. -For example: - -```javascript -worker = fork(WORKER_WRAP_PATH, [workerPath], { - stdio: [ - /* stdin: */ 0, - /* stdout: */ 'pipe', - /* stderr: */ 'pipe', - 'ipc', - ], - env: Object.assign({}, process.env, { - DEBUG_COLORS: 1 // without this settings, colors won't be shown - }), -}); - -worker.stderr.pipe(process.stderr, { end: false }); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - - Josh Junon - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/package.json deleted file mode 100644 index 60dfcf5..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "debug", - "version": "4.4.0", - "repository": { - "type": "git", - "url": "git://github.com/debug-js/debug.git" - }, - "description": "Lightweight debugging utility for Node.js and the browser", - "keywords": [ - "debug", - "log", - "debugger" - ], - "files": [ - "src", - "LICENSE", - "README.md" - ], - "author": "Josh Junon (https://github.com/qix-)", - "contributors": [ - "TJ Holowaychuk ", - "Nathan Rajlich (http://n8.io)", - "Andrew Rhyne " - ], - "license": "MIT", - "scripts": { - "lint": "xo", - "test": "npm run test:node && npm run test:browser && npm run lint", - "test:node": "istanbul cover _mocha -- test.js test.node.js", - "test:browser": "karma start --single-run", - "test:coverage": "cat ./coverage/lcov.info | coveralls" - }, - "dependencies": { - "ms": "^2.1.3" - }, - "devDependencies": { - "brfs": "^2.0.1", - "browserify": "^16.2.3", - "coveralls": "^3.0.2", - "istanbul": "^0.4.5", - "karma": "^3.1.4", - "karma-browserify": "^6.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-mocha": "^1.3.0", - "mocha": "^5.2.0", - "mocha-lcov-reporter": "^1.2.0", - "sinon": "^14.0.0", - "xo": "^0.23.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - }, - "main": "./src/index.js", - "browser": "./src/browser.js", - "engines": { - "node": ">=6.0" - }, - "xo": { - "rules": { - "import/extensions": "off" - } - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/browser.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/browser.js deleted file mode 100644 index df8e179..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/browser.js +++ /dev/null @@ -1,272 +0,0 @@ -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); -exports.destroy = (() => { - let warned = false; - - return () => { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -})(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - let m; - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - // eslint-disable-next-line no-return-assign - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ -exports.log = console.debug || console.log || (() => {}); - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/common.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/common.js deleted file mode 100644 index 528c7ec..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/common.js +++ /dev/null @@ -1,292 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require('ms'); - createDebug.destroy = destroy; - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: v => { - enableOverride = v; - } - }); - - // Env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - - createDebug.names = []; - createDebug.skips = []; - - const split = (typeof namespaces === 'string' ? namespaces : '') - .trim() - .replace(' ', ',') - .split(',') - .filter(Boolean); - - for (const ns of split) { - if (ns[0] === '-') { - createDebug.skips.push(ns.slice(1)); - } else { - createDebug.names.push(ns); - } - } - } - - /** - * Checks if the given string matches a namespace template, honoring - * asterisks as wildcards. - * - * @param {String} search - * @param {String} template - * @return {Boolean} - */ - function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - - while (searchIndex < search.length) { - if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { - // Match character or proceed with wildcard - if (template[templateIndex] === '*') { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; // Skip the '*' - } else { - searchIndex++; - templateIndex++; - } - } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition - // Backtrack to the last '*' and try to match more characters - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else { - return false; // No match - } - } - - // Handle trailing '*' in template - while (templateIndex < template.length && template[templateIndex] === '*') { - templateIndex++; - } - - return templateIndex === template.length; - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names, - ...createDebug.skips.map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - for (const skip of createDebug.skips) { - if (matchesTemplate(name, skip)) { - return false; - } - } - - for (const ns of createDebug.names) { - if (matchesTemplate(name, ns)) { - return true; - } - } - - return false; - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/index.js deleted file mode 100644 index bf4c57f..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/node.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/node.js deleted file mode 100644 index 715560a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/debug/src/node.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Module dependencies. - */ - -const tty = require('tty'); -const util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - */ - -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.destroy = util.deprecate( - () => {}, - 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' -); - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = require('supports-color'); - - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); - - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - const {namespace: name, useColors} = this; - - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} - -/** - * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. - */ - -function log(...args) { - return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init(debug) { - debug.inspectOpts = {}; - - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n') - .map(str => str.trim()) - .join(' '); -}; - -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ - -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/History.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/History.md deleted file mode 100644 index 5b6cba5..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/History.md +++ /dev/null @@ -1,3858 +0,0 @@ -5.1.0 / 2025-03-31 -======================== - -* Add support for `Uint8Array` in `res.send()` -* Add support for ETag option in `res.sendFile()` -* Add support for multiple links with the same rel in `res.links()` -* Add funding field to package.json -* perf: use loop for acceptParams -* refactor: prefix built-in node module imports -* deps: remove `setprototypeof` -* deps: remove `safe-buffer` -* deps: remove `utils-merge` -* deps: remove `methods` -* deps: remove `depd` -* deps: `debug@^4.4.0` -* deps: `body-parser@^2.2.0` -* deps: `router@^2.2.0` -* deps: `content-type@^1.0.5` -* deps: `finalhandler@^2.1.0` -* deps: `qs@^6.14.0` -* deps: `server-static@2.2.0` -* deps: `type-is@2.0.1` - -5.0.1 / 2024-10-08 -========== - -* Update `cookie` semver lock to address [CVE-2024-47764](https://nvd.nist.gov/vuln/detail/CVE-2024-47764) - -5.0.0 / 2024-09-10 -========================= -* remove: - - `path-is-absolute` dependency - use `path.isAbsolute` instead -* breaking: - * `res.status()` accepts only integers, and input must be greater than 99 and less than 1000 - * will throw a `RangeError: Invalid status code: ${code}. Status code must be greater than 99 and less than 1000.` for inputs outside this range - * will throw a `TypeError: Invalid status code: ${code}. Status code must be an integer.` for non integer inputs - * deps: send@1.0.0 - * `res.redirect('back')` and `res.location('back')` is no longer a supported magic string, explicitly use `req.get('Referrer') || '/'`. -* change: - - `res.clearCookie` will ignore user provided `maxAge` and `expires` options -* deps: cookie-signature@^1.2.1 -* deps: debug@4.3.6 -* deps: merge-descriptors@^2.0.0 -* deps: serve-static@^2.1.0 -* deps: qs@6.13.0 -* deps: accepts@^2.0.0 -* deps: mime-types@^3.0.0 - - `application/javascript` => `text/javascript` -* deps: type-is@^2.0.0 -* deps: content-disposition@^1.0.0 -* deps: finalhandler@^2.0.0 -* deps: fresh@^2.0.0 -* deps: body-parser@^2.0.1 -* deps: send@^1.1.0 - -5.0.0-beta.3 / 2024-03-25 -========================= - -This incorporates all changes after 4.19.1 up to 4.19.2. - -5.0.0-beta.2 / 2024-03-20 -========================= - -This incorporates all changes after 4.17.2 up to 4.19.1. - -5.0.0-beta.1 / 2022-02-14 -========================= - -This is the first Express 5.0 beta release, based off 4.17.2 and includes -changes from 5.0.0-alpha.8. - - * change: - - Default "query parser" setting to `'simple'` - - Requires Node.js 4+ - - Use `mime-types` for file to content type mapping - * deps: array-flatten@3.0.0 - * deps: body-parser@2.0.0-beta.1 - - `req.body` is no longer always initialized to `{}` - - `urlencoded` parser now defaults `extended` to `false` - - Use `on-finished` to determine when body read - * deps: router@2.0.0-beta.1 - - Add new `?`, `*`, and `+` parameter modifiers - - Internalize private `router.process_params` method - - Matching group expressions are only RegExp syntax - - Named matching groups no longer available by position in `req.params` - - Regular expressions can only be used in a matching group - - Remove `debug` dependency - - Special `*` path segment behavior removed - - deps: array-flatten@3.0.0 - - deps: parseurl@~1.3.3 - - deps: path-to-regexp@3.2.0 - - deps: setprototypeof@1.2.0 - * deps: send@1.0.0-beta.1 - - Change `dotfiles` option default to `'ignore'` - - Remove `hidden` option; use `dotfiles` option instead - - Use `mime-types` for file to content type mapping - - deps: debug@3.1.0 - * deps: serve-static@2.0.0-beta.1 - - Change `dotfiles` option default to `'ignore'` - - Remove `hidden` option; use `dotfiles` option instead - - Use `mime-types` for file to content type mapping - - Remove `express.static.mime` export; use `mime-types` package instead - - deps: send@1.0.0-beta.1 - -5.0.0-alpha.8 / 2020-03-25 -========================== - -This is the eighth Express 5.0 alpha release, based off 4.17.1 and includes -changes from 5.0.0-alpha.7. - -5.0.0-alpha.7 / 2018-10-26 -========================== - -This is the seventh Express 5.0 alpha release, based off 4.16.4 and includes -changes from 5.0.0-alpha.6. - -The major change with this alpha is the basic support for returned, rejected -Promises in the router. - - * remove: - - `path-to-regexp` dependency - * deps: debug@3.1.0 - - Add `DEBUG_HIDE_DATE` environment variable - - Change timer to per-namespace instead of global - - Change non-TTY date format - - Remove `DEBUG_FD` environment variable support - - Support 256 namespace colors - * deps: router@2.0.0-alpha.1 - - Add basic support for returned, rejected Promises - - Fix JSDoc for `Router` constructor - - deps: debug@3.1.0 - - deps: parseurl@~1.3.2 - - deps: setprototypeof@1.1.0 - - deps: utils-merge@1.0.1 - -5.0.0-alpha.6 / 2017-09-24 -========================== - -This is the sixth Express 5.0 alpha release, based off 4.15.5 and includes -changes from 5.0.0-alpha.5. - - * remove: - - `res.redirect(url, status)` signature - use `res.redirect(status, url)` - - `res.send(status, body)` signature - use `res.status(status).send(body)` - * deps: router@~1.3.1 - - deps: debug@2.6.8 - -5.0.0-alpha.5 / 2017-03-06 -========================== - -This is the fifth Express 5.0 alpha release, based off 4.15.2 and includes -changes from 5.0.0-alpha.4. - -5.0.0-alpha.4 / 2017-03-01 -========================== - -This is the fourth Express 5.0 alpha release, based off 4.15.0 and includes -changes from 5.0.0-alpha.3. - - * remove: - - Remove Express 3.x middleware error stubs - * deps: router@~1.3.0 - - Add `next("router")` to exit from router - - Fix case where `router.use` skipped requests routes did not - - Skip routing when `req.url` is not set - - Use `%o` in path debug to tell types apart - - deps: debug@2.6.1 - - deps: setprototypeof@1.0.3 - - perf: add fast match path for `*` route - -5.0.0-alpha.3 / 2017-01-28 -========================== - -This is the third Express 5.0 alpha release, based off 4.14.1 and includes -changes from 5.0.0-alpha.2. - - * remove: - - `res.json(status, obj)` signature - use `res.status(status).json(obj)` - - `res.jsonp(status, obj)` signature - use `res.status(status).jsonp(obj)` - - `res.vary()` (no arguments) -- provide a field name as an argument - * deps: array-flatten@2.1.1 - * deps: path-is-absolute@1.0.1 - * deps: router@~1.1.5 - - deps: array-flatten@2.0.1 - - deps: methods@~1.1.2 - - deps: parseurl@~1.3.1 - - deps: setprototypeof@1.0.2 - -5.0.0-alpha.2 / 2015-07-06 -========================== - -This is the second Express 5.0 alpha release, based off 4.13.1 and includes -changes from 5.0.0-alpha.1. - - * remove: - - `app.param(fn)` - - `req.param()` -- use `req.params`, `req.body`, or `req.query` instead - * change: - - `res.render` callback is always async, even for sync view engines - - The leading `:` character in `name` for `app.param(name, fn)` is no longer removed - - Use `router` module for routing - - Use `path-is-absolute` module for absolute path detection - -5.0.0-alpha.1 / 2014-11-06 -========================== - -This is the first Express 5.0 alpha release, based off 4.10.1. - - * remove: - - `app.del` - use `app.delete` - - `req.acceptsCharset` - use `req.acceptsCharsets` - - `req.acceptsEncoding` - use `req.acceptsEncodings` - - `req.acceptsLanguage` - use `req.acceptsLanguages` - - `res.json(obj, status)` signature - use `res.json(status, obj)` - - `res.jsonp(obj, status)` signature - use `res.jsonp(status, obj)` - - `res.send(body, status)` signature - use `res.send(status, body)` - - `res.send(status)` signature - use `res.sendStatus(status)` - - `res.sendfile` - use `res.sendFile` instead - - `express.query` middleware - * change: - - `req.host` now returns host (`hostname:port`) - use `req.hostname` for only hostname - - `req.query` is now a getter instead of a plain property - * add: - - `app.router` is a reference to the base router - -4.20.0 / 2024-09-10 -========== - * deps: serve-static@0.16.0 - * Remove link renderization in html while redirecting - * deps: send@0.19.0 - * Remove link renderization in html while redirecting - * deps: body-parser@0.6.0 - * add `depth` option to customize the depth level in the parser - * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) - * Remove link renderization in html while using `res.redirect` - * deps: path-to-regexp@0.1.10 - - Adds support for named matching groups in the routes using a regex - - Adds backtracking protection to parameters without regexes defined - * deps: encodeurl@~2.0.0 - - Removes encoding of `\`, `|`, and `^` to align better with URL spec - * Deprecate passing `options.maxAge` and `options.expires` to `res.clearCookie` - - Will be ignored in v5, clearCookie will set a cookie with an expires in the past to instruct clients to delete the cookie - -4.19.2 / 2024-03-25 -========== - - * Improved fix for open redirect allow list bypass - -4.19.1 / 2024-03-20 -========== - - * Allow passing non-strings to res.location with new encoding handling checks - -4.19.0 / 2024-03-20 -========== - - * Prevent open redirect allow list bypass due to encodeurl - * deps: cookie@0.6.0 - -4.18.3 / 2024-02-29 -========== - - * Fix routing requests without method - * deps: body-parser@1.20.2 - - Fix strict json error message on Node.js 19+ - - deps: content-type@~1.0.5 - - deps: raw-body@2.5.2 - * deps: cookie@0.6.0 - - Add `partitioned` option - -4.18.2 / 2022-10-08 -=================== - - * Fix regression routing a large stack in a single route - * deps: body-parser@1.20.1 - - deps: qs@6.11.0 - - perf: remove unnecessary object clone - * deps: qs@6.11.0 - -4.18.1 / 2022-04-29 -=================== - - * Fix hanging on large stack of sync routes - -4.18.0 / 2022-04-25 -=================== - - * Add "root" option to `res.download` - * Allow `options` without `filename` in `res.download` - * Deprecate string and non-integer arguments to `res.status` - * Fix behavior of `null`/`undefined` as `maxAge` in `res.cookie` - * Fix handling very large stacks of sync middleware - * Ignore `Object.prototype` values in settings through `app.set`/`app.get` - * Invoke `default` with same arguments as types in `res.format` - * Support proper 205 responses using `res.send` - * Use `http-errors` for `res.format` error - * deps: body-parser@1.20.0 - - Fix error message for json parse whitespace in `strict` - - Fix internal error when inflated body exceeds limit - - Prevent loss of async hooks context - - Prevent hanging when request already read - - deps: depd@2.0.0 - - deps: http-errors@2.0.0 - - deps: on-finished@2.4.1 - - deps: qs@6.10.3 - - deps: raw-body@2.5.1 - * deps: cookie@0.5.0 - - Add `priority` option - - Fix `expires` option to reject invalid dates - * deps: depd@2.0.0 - - Replace internal `eval` usage with `Function` constructor - - Use instance methods on `process` to check for listeners - * deps: finalhandler@1.2.0 - - Remove set content headers that break response - - deps: on-finished@2.4.1 - - deps: statuses@2.0.1 - * deps: on-finished@2.4.1 - - Prevent loss of async hooks context - * deps: qs@6.10.3 - * deps: send@0.18.0 - - Fix emitted 416 error missing headers property - - Limit the headers removed for 304 response - - deps: depd@2.0.0 - - deps: destroy@1.2.0 - - deps: http-errors@2.0.0 - - deps: on-finished@2.4.1 - - deps: statuses@2.0.1 - * deps: serve-static@1.15.0 - - deps: send@0.18.0 - * deps: statuses@2.0.1 - - Remove code 306 - - Rename `425 Unordered Collection` to standard `425 Too Early` - -4.17.3 / 2022-02-16 -=================== - - * deps: accepts@~1.3.8 - - deps: mime-types@~2.1.34 - - deps: negotiator@0.6.3 - * deps: body-parser@1.19.2 - - deps: bytes@3.1.2 - - deps: qs@6.9.7 - - deps: raw-body@2.4.3 - * deps: cookie@0.4.2 - * deps: qs@6.9.7 - * Fix handling of `__proto__` keys - * pref: remove unnecessary regexp for trust proxy - -4.17.2 / 2021-12-16 -=================== - - * Fix handling of `undefined` in `res.jsonp` - * Fix handling of `undefined` when `"json escape"` is enabled - * Fix incorrect middleware execution with unanchored `RegExp`s - * Fix `res.jsonp(obj, status)` deprecation message - * Fix typo in `res.is` JSDoc - * deps: body-parser@1.19.1 - - deps: bytes@3.1.1 - - deps: http-errors@1.8.1 - - deps: qs@6.9.6 - - deps: raw-body@2.4.2 - - deps: safe-buffer@5.2.1 - - deps: type-is@~1.6.18 - * deps: content-disposition@0.5.4 - - deps: safe-buffer@5.2.1 - * deps: cookie@0.4.1 - - Fix `maxAge` option to reject invalid values - * deps: proxy-addr@~2.0.7 - - Use `req.socket` over deprecated `req.connection` - - deps: forwarded@0.2.0 - - deps: ipaddr.js@1.9.1 - * deps: qs@6.9.6 - * deps: safe-buffer@5.2.1 - * deps: send@0.17.2 - - deps: http-errors@1.8.1 - - deps: ms@2.1.3 - - pref: ignore empty http tokens - * deps: serve-static@1.14.2 - - deps: send@0.17.2 - * deps: setprototypeof@1.2.0 - -4.17.1 / 2019-05-25 -=================== - - * Revert "Improve error message for `null`/`undefined` to `res.status`" - -4.17.0 / 2019-05-16 -=================== - - * Add `express.raw` to parse bodies into `Buffer` - * Add `express.text` to parse bodies into string - * Improve error message for non-strings to `res.sendFile` - * Improve error message for `null`/`undefined` to `res.status` - * Support multiple hosts in `X-Forwarded-Host` - * deps: accepts@~1.3.7 - * deps: body-parser@1.19.0 - - Add encoding MIK - - Add petabyte (`pb`) support - - Fix parsing array brackets after index - - deps: bytes@3.1.0 - - deps: http-errors@1.7.2 - - deps: iconv-lite@0.4.24 - - deps: qs@6.7.0 - - deps: raw-body@2.4.0 - - deps: type-is@~1.6.17 - * deps: content-disposition@0.5.3 - * deps: cookie@0.4.0 - - Add `SameSite=None` support - * deps: finalhandler@~1.1.2 - - Set stricter `Content-Security-Policy` header - - deps: parseurl@~1.3.3 - - deps: statuses@~1.5.0 - * deps: parseurl@~1.3.3 - * deps: proxy-addr@~2.0.5 - - deps: ipaddr.js@1.9.0 - * deps: qs@6.7.0 - - Fix parsing array brackets after index - * deps: range-parser@~1.2.1 - * deps: send@0.17.1 - - Set stricter CSP header in redirect & error responses - - deps: http-errors@~1.7.2 - - deps: mime@1.6.0 - - deps: ms@2.1.1 - - deps: range-parser@~1.2.1 - - deps: statuses@~1.5.0 - - perf: remove redundant `path.normalize` call - * deps: serve-static@1.14.1 - - Set stricter CSP header in redirect response - - deps: parseurl@~1.3.3 - - deps: send@0.17.1 - * deps: setprototypeof@1.1.1 - * deps: statuses@~1.5.0 - - Add `103 Early Hints` - * deps: type-is@~1.6.18 - - deps: mime-types@~2.1.24 - - perf: prevent internal `throw` on invalid type - -4.16.4 / 2018-10-10 -=================== - - * Fix issue where `"Request aborted"` may be logged in `res.sendfile` - * Fix JSDoc for `Router` constructor - * deps: body-parser@1.18.3 - - Fix deprecation warnings on Node.js 10+ - - Fix stack trace for strict json parse error - - deps: depd@~1.1.2 - - deps: http-errors@~1.6.3 - - deps: iconv-lite@0.4.23 - - deps: qs@6.5.2 - - deps: raw-body@2.3.3 - - deps: type-is@~1.6.16 - * deps: proxy-addr@~2.0.4 - - deps: ipaddr.js@1.8.0 - * deps: qs@6.5.2 - * deps: safe-buffer@5.1.2 - -4.16.3 / 2018-03-12 -=================== - - * deps: accepts@~1.3.5 - - deps: mime-types@~2.1.18 - * deps: depd@~1.1.2 - - perf: remove argument reassignment - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: finalhandler@1.1.1 - - Fix 404 output for bad / missing pathnames - - deps: encodeurl@~1.0.2 - - deps: statuses@~1.4.0 - * deps: proxy-addr@~2.0.3 - - deps: ipaddr.js@1.6.0 - * deps: send@0.16.2 - - Fix incorrect end tag in default error & redirects - - deps: depd@~1.1.2 - - deps: encodeurl@~1.0.2 - - deps: statuses@~1.4.0 - * deps: serve-static@1.13.2 - - Fix incorrect end tag in redirects - - deps: encodeurl@~1.0.2 - - deps: send@0.16.2 - * deps: statuses@~1.4.0 - * deps: type-is@~1.6.16 - - deps: mime-types@~2.1.18 - -4.16.2 / 2017-10-09 -=================== - - * Fix `TypeError` in `res.send` when given `Buffer` and `ETag` header set - * perf: skip parsing of entire `X-Forwarded-Proto` header - -4.16.1 / 2017-09-29 -=================== - - * deps: send@0.16.1 - * deps: serve-static@1.13.1 - - Fix regression when `root` is incorrectly set to a file - - deps: send@0.16.1 - -4.16.0 / 2017-09-28 -=================== - - * Add `"json escape"` setting for `res.json` and `res.jsonp` - * Add `express.json` and `express.urlencoded` to parse bodies - * Add `options` argument to `res.download` - * Improve error message when autoloading invalid view engine - * Improve error messages when non-function provided as middleware - * Skip `Buffer` encoding when not generating ETag for small response - * Use `safe-buffer` for improved Buffer API - * deps: accepts@~1.3.4 - - deps: mime-types@~2.1.16 - * deps: content-type@~1.0.4 - - perf: remove argument reassignment - - perf: skip parameter parsing when no parameters - * deps: etag@~1.8.1 - - perf: replace regular expression with substring - * deps: finalhandler@1.1.0 - - Use `res.headersSent` when available - * deps: parseurl@~1.3.2 - - perf: reduce overhead for full URLs - - perf: unroll the "fast-path" `RegExp` - * deps: proxy-addr@~2.0.2 - - Fix trimming leading / trailing OWS in `X-Forwarded-For` - - deps: forwarded@~0.1.2 - - deps: ipaddr.js@1.5.2 - - perf: reduce overhead when no `X-Forwarded-For` header - * deps: qs@6.5.1 - - Fix parsing & compacting very deep objects - * deps: send@0.16.0 - - Add 70 new types for file extensions - - Add `immutable` option - - Fix missing `` in default error & redirects - - Set charset as "UTF-8" for .js and .json - - Use instance methods on steam to check for listeners - - deps: mime@1.4.1 - - perf: improve path validation speed - * deps: serve-static@1.13.0 - - Add 70 new types for file extensions - - Add `immutable` option - - Set charset as "UTF-8" for .js and .json - - deps: send@0.16.0 - * deps: setprototypeof@1.1.0 - * deps: utils-merge@1.0.1 - * deps: vary@~1.1.2 - - perf: improve header token parsing speed - * perf: re-use options object when generating ETags - * perf: remove dead `.charset` set in `res.jsonp` - -4.15.5 / 2017-09-24 -=================== - - * deps: debug@2.6.9 - * deps: finalhandler@~1.0.6 - - deps: debug@2.6.9 - - deps: parseurl@~1.3.2 - * deps: fresh@0.5.2 - - Fix handling of modified headers with invalid dates - - perf: improve ETag match loop - - perf: improve `If-None-Match` token parsing - * deps: send@0.15.6 - - Fix handling of modified headers with invalid dates - - deps: debug@2.6.9 - - deps: etag@~1.8.1 - - deps: fresh@0.5.2 - - perf: improve `If-Match` token parsing - * deps: serve-static@1.12.6 - - deps: parseurl@~1.3.2 - - deps: send@0.15.6 - - perf: improve slash collapsing - -4.15.4 / 2017-08-06 -=================== - - * deps: debug@2.6.8 - * deps: depd@~1.1.1 - - Remove unnecessary `Buffer` loading - * deps: finalhandler@~1.0.4 - - deps: debug@2.6.8 - * deps: proxy-addr@~1.1.5 - - Fix array argument being altered - - deps: ipaddr.js@1.4.0 - * deps: qs@6.5.0 - * deps: send@0.15.4 - - deps: debug@2.6.8 - - deps: depd@~1.1.1 - - deps: http-errors@~1.6.2 - * deps: serve-static@1.12.4 - - deps: send@0.15.4 - -4.15.3 / 2017-05-16 -=================== - - * Fix error when `res.set` cannot add charset to `Content-Type` - * deps: debug@2.6.7 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@2.0.0 - * deps: finalhandler@~1.0.3 - - Fix missing `` in HTML document - - deps: debug@2.6.7 - * deps: proxy-addr@~1.1.4 - - deps: ipaddr.js@1.3.0 - * deps: send@0.15.3 - - deps: debug@2.6.7 - - deps: ms@2.0.0 - * deps: serve-static@1.12.3 - - deps: send@0.15.3 - * deps: type-is@~1.6.15 - - deps: mime-types@~2.1.15 - * deps: vary@~1.1.1 - - perf: hoist regular expression - -4.15.2 / 2017-03-06 -=================== - - * deps: qs@6.4.0 - - Fix regression parsing keys starting with `[` - -4.15.1 / 2017-03-05 -=================== - - * deps: send@0.15.1 - - Fix issue when `Date.parse` does not return `NaN` on invalid date - - Fix strict violation in broken environments - * deps: serve-static@1.12.1 - - Fix issue when `Date.parse` does not return `NaN` on invalid date - - deps: send@0.15.1 - -4.15.0 / 2017-03-01 -=================== - - * Add debug message when loading view engine - * Add `next("router")` to exit from router - * Fix case where `router.use` skipped requests routes did not - * Remove usage of `res._headers` private field - - Improves compatibility with Node.js 8 nightly - * Skip routing when `req.url` is not set - * Use `%o` in path debug to tell types apart - * Use `Object.create` to setup request & response prototypes - * Use `setprototypeof` module to replace `__proto__` setting - * Use `statuses` instead of `http` module for status messages - * deps: debug@2.6.1 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable set to `3` or higher - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: etag@~1.8.0 - - Use SHA1 instead of MD5 for ETag hashing - - Works with FIPS 140-2 OpenSSL configuration - * deps: finalhandler@~1.0.0 - - Fix exception when `err` cannot be converted to a string - - Fully URL-encode the pathname in the 404 - - Only include the pathname in the 404 message - - Send complete HTML document - - Set `Content-Security-Policy: default-src 'self'` header - - deps: debug@2.6.1 - * deps: fresh@0.5.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - perf: delay reading header values until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove duplicate conditional - - perf: remove unnecessary boolean coercions - - perf: skip checking modified time if ETag check failed - - perf: skip parsing `If-None-Match` when no `ETag` header - - perf: use `Date.parse` instead of `new Date` - * deps: qs@6.3.1 - - Fix array parsing from skipping empty values - - Fix compacting nested arrays - * deps: send@0.15.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - Remove usage of `res._headers` private field - - Support `If-Match` and `If-Unmodified-Since` headers - - Use `res.getHeaderNames()` when available - - Use `res.headersSent` when available - - deps: debug@2.6.1 - - deps: etag@~1.8.0 - - deps: fresh@0.5.0 - - deps: http-errors@~1.6.1 - * deps: serve-static@1.12.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - Remove usage of `res._headers` private field - - Send complete HTML document in redirect response - - Set default CSP header in redirect response - - Support `If-Match` and `If-Unmodified-Since` headers - - Use `res.getHeaderNames()` when available - - Use `res.headersSent` when available - - deps: send@0.15.0 - * perf: add fast match path for `*` route - * perf: improve `req.ips` performance - -4.14.1 / 2017-01-28 -=================== - - * deps: content-disposition@0.5.2 - * deps: finalhandler@0.5.1 - - Fix exception when `err.headers` is not an object - - deps: statuses@~1.3.1 - - perf: hoist regular expressions - - perf: remove duplicate validation path - * deps: proxy-addr@~1.1.3 - - deps: ipaddr.js@1.2.0 - * deps: send@0.14.2 - - deps: http-errors@~1.5.1 - - deps: ms@0.7.2 - - deps: statuses@~1.3.1 - * deps: serve-static@~1.11.2 - - deps: send@0.14.2 - * deps: type-is@~1.6.14 - - deps: mime-types@~2.1.13 - -4.14.0 / 2016-06-16 -=================== - - * Add `acceptRanges` option to `res.sendFile`/`res.sendfile` - * Add `cacheControl` option to `res.sendFile`/`res.sendfile` - * Add `options` argument to `req.range` - - Includes the `combine` option - * Encode URL in `res.location`/`res.redirect` if not already encoded - * Fix some redirect handling in `res.sendFile`/`res.sendfile` - * Fix Windows absolute path check using forward slashes - * Improve error with invalid arguments to `req.get()` - * Improve performance for `res.json`/`res.jsonp` in most cases - * Improve `Range` header handling in `res.sendFile`/`res.sendfile` - * deps: accepts@~1.3.3 - - Fix including type extensions in parameters in `Accept` parsing - - Fix parsing `Accept` parameters with quoted equals - - Fix parsing `Accept` parameters with quoted semicolons - - Many performance improvements - - deps: mime-types@~2.1.11 - - deps: negotiator@0.6.1 - * deps: content-type@~1.0.2 - - perf: enable strict mode - * deps: cookie@0.3.1 - - Add `sameSite` option - - Fix cookie `Max-Age` to never be a floating point number - - Improve error message when `encode` is not a function - - Improve error message when `expires` is not a `Date` - - Throw better error for invalid argument to parse - - Throw on invalid values provided to `serialize` - - perf: enable strict mode - - perf: hoist regular expression - - perf: use for loop in parse - - perf: use string concatenation for serialization - * deps: finalhandler@0.5.0 - - Change invalid or non-numeric status code to 500 - - Overwrite status message to match set status code - - Prefer `err.statusCode` if `err.status` is invalid - - Set response headers from `err.headers` object - - Use `statuses` instead of `http` module for status messages - * deps: proxy-addr@~1.1.2 - - Fix accepting various invalid netmasks - - Fix IPv6-mapped IPv4 validation edge cases - - IPv4 netmasks must be contiguous - - IPv6 addresses cannot be used as a netmask - - deps: ipaddr.js@1.1.1 - * deps: qs@6.2.0 - - Add `decoder` option in `parse` function - * deps: range-parser@~1.2.0 - - Add `combine` option to combine overlapping ranges - - Fix incorrectly returning -1 when there is at least one valid range - - perf: remove internal function - * deps: send@0.14.1 - - Add `acceptRanges` option - - Add `cacheControl` option - - Attempt to combine multiple ranges into single range - - Correctly inherit from `Stream` class - - Fix `Content-Range` header in 416 responses when using `start`/`end` options - - Fix `Content-Range` header missing from default 416 responses - - Fix redirect error when `path` contains raw non-URL characters - - Fix redirect when `path` starts with multiple forward slashes - - Ignore non-byte `Range` headers - - deps: http-errors@~1.5.0 - - deps: range-parser@~1.2.0 - - deps: statuses@~1.3.0 - - perf: remove argument reassignment - * deps: serve-static@~1.11.1 - - Add `acceptRanges` option - - Add `cacheControl` option - - Attempt to combine multiple ranges into single range - - Fix redirect error when `req.url` contains raw non-URL characters - - Ignore non-byte `Range` headers - - Use status code 301 for redirects - - deps: send@0.14.1 - * deps: type-is@~1.6.13 - - Fix type error when given invalid type to match against - - deps: mime-types@~2.1.11 - * deps: vary@~1.1.0 - - Only accept valid field names in the `field` argument - * perf: use strict equality when possible - -4.13.4 / 2016-01-21 -=================== - - * deps: content-disposition@0.5.1 - - perf: enable strict mode - * deps: cookie@0.1.5 - - Throw on invalid values provided to `serialize` - * deps: depd@~1.1.0 - - Support web browser loading - - perf: enable strict mode - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - * deps: finalhandler@0.4.1 - - deps: escape-html@~1.0.3 - * deps: merge-descriptors@1.0.1 - - perf: enable strict mode - * deps: methods@~1.1.2 - - perf: enable strict mode - * deps: parseurl@~1.3.1 - - perf: enable strict mode - * deps: proxy-addr@~1.0.10 - - deps: ipaddr.js@1.0.5 - - perf: enable strict mode - * deps: range-parser@~1.0.3 - - perf: enable strict mode - * deps: send@0.13.1 - - deps: depd@~1.1.0 - - deps: destroy@~1.0.4 - - deps: escape-html@~1.0.3 - - deps: range-parser@~1.0.3 - * deps: serve-static@~1.10.2 - - deps: escape-html@~1.0.3 - - deps: parseurl@~1.3.0 - - deps: send@0.13.1 - -4.13.3 / 2015-08-02 -=================== - - * Fix infinite loop condition using `mergeParams: true` - * Fix inner numeric indices incorrectly altering parent `req.params` - -4.13.2 / 2015-07-31 -=================== - - * deps: accepts@~1.2.12 - - deps: mime-types@~2.1.4 - * deps: array-flatten@1.1.1 - - perf: enable strict mode - * deps: path-to-regexp@0.1.7 - - Fix regression with escaped round brackets and matching groups - * deps: type-is@~1.6.6 - - deps: mime-types@~2.1.4 - -4.13.1 / 2015-07-05 -=================== - - * deps: accepts@~1.2.10 - - deps: mime-types@~2.1.2 - * deps: qs@4.0.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix various parsing edge cases - * deps: type-is@~1.6.4 - - deps: mime-types@~2.1.2 - - perf: enable strict mode - - perf: remove argument reassignment - -4.13.0 / 2015-06-20 -=================== - - * Add settings to debug output - * Fix `res.format` error when only `default` provided - * Fix issue where `next('route')` in `app.param` would incorrectly skip values - * Fix hiding platform issues with `decodeURIComponent` - - Only `URIError`s are a 400 - * Fix using `*` before params in routes - * Fix using capture groups before params in routes - * Simplify `res.cookie` to call `res.append` - * Use `array-flatten` module for flattening arrays - * deps: accepts@~1.2.9 - - deps: mime-types@~2.1.1 - - perf: avoid argument reassignment & argument slice - - perf: avoid negotiator recursive construction - - perf: enable strict mode - - perf: remove unnecessary bitwise operator - * deps: cookie@0.1.3 - - perf: deduce the scope of try-catch deopt - - perf: remove argument reassignments - * deps: escape-html@1.0.2 - * deps: etag@~1.7.0 - - Always include entity length in ETags for hash length extensions - - Generate non-Stats ETags using MD5 only (no longer CRC32) - - Improve stat performance by removing hashing - - Improve support for JXcore - - Remove base64 padding in ETags to shorten - - Support "fake" stats objects in environments without fs - - Use MD5 instead of MD4 in weak ETags over 1KB - * deps: finalhandler@0.4.0 - - Fix a false-positive when unpiping in Node.js 0.8 - - Support `statusCode` property on `Error` objects - - Use `unpipe` module for unpiping requests - - deps: escape-html@1.0.2 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove argument reassignment - * deps: fresh@0.3.0 - - Add weak `ETag` matching support - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * deps: path-to-regexp@0.1.6 - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - * deps: serve-static@~1.10.0 - - Add `fallthrough` option - - Fix reading options from options prototype - - Improve the default redirect response headers - - Malformed URLs now `next()` instead of 400 - - deps: escape-html@1.0.2 - - deps: send@0.13.0 - - perf: enable strict mode - - perf: remove argument reassignment - * deps: type-is@~1.6.3 - - deps: mime-types@~2.1.1 - - perf: reduce try block size - - perf: remove bitwise operations - * perf: enable strict mode - * perf: isolate `app.render` try block - * perf: remove argument reassignments in application - * perf: remove argument reassignments in request prototype - * perf: remove argument reassignments in response prototype - * perf: remove argument reassignments in routing - * perf: remove argument reassignments in `View` - * perf: skip attempting to decode zero length string - * perf: use saved reference to `http.STATUS_CODES` - -4.12.4 / 2015-05-17 -=================== - - * deps: accepts@~1.2.7 - - deps: mime-types@~2.0.11 - - deps: negotiator@0.5.3 - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - * deps: depd@~1.0.1 - * deps: etag@~1.6.0 - - Improve support for JXcore - - Support "fake" stats objects in environments without `fs` - * deps: finalhandler@0.3.6 - - deps: debug@~2.2.0 - - deps: on-finished@~2.2.1 - * deps: on-finished@~2.2.1 - - Fix `isFinished(req)` when data buffered - * deps: proxy-addr@~1.0.8 - - deps: ipaddr.js@1.0.1 - * deps: qs@2.4.2 - - Fix allowing parameters like `constructor` - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - * deps: serve-static@~1.9.3 - - deps: send@0.12.3 - * deps: type-is@~1.6.2 - - deps: mime-types@~2.0.11 - -4.12.3 / 2015-03-17 -=================== - - * deps: accepts@~1.2.5 - - deps: mime-types@~2.0.10 - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: finalhandler@0.3.4 - - deps: debug@~2.1.3 - * deps: proxy-addr@~1.0.7 - - deps: ipaddr.js@0.1.9 - * deps: qs@2.4.1 - - Fix error when parameter `hasOwnProperty` is present - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - * deps: serve-static@~1.9.2 - - deps: send@0.12.2 - * deps: type-is@~1.6.1 - - deps: mime-types@~2.0.10 - -4.12.2 / 2015-03-02 -=================== - - * Fix regression where `"Request aborted"` is logged using `res.sendFile` - -4.12.1 / 2015-03-01 -=================== - - * Fix constructing application with non-configurable prototype properties - * Fix `ECONNRESET` errors from `res.sendFile` usage - * Fix `req.host` when using "trust proxy" hops count - * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count - * Fix wrong `code` on aborted connections from `res.sendFile` - * deps: merge-descriptors@1.0.0 - -4.12.0 / 2015-02-23 -=================== - - * Fix `"trust proxy"` setting to inherit when app is mounted - * Generate `ETag`s for all request responses - - No longer restricted to only responses for `GET` and `HEAD` requests - * Use `content-type` to parse `Content-Type` headers - * deps: accepts@~1.2.4 - - Fix preference sorting to be stable for long acceptable lists - - deps: mime-types@~2.0.9 - - deps: negotiator@0.5.1 - * deps: cookie-signature@1.0.6 - * deps: send@0.12.1 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - * deps: serve-static@~1.9.1 - - deps: send@0.12.1 - * deps: type-is@~1.6.0 - - fix argument reassignment - - fix false-positives in `hasBody` `Transfer-Encoding` check - - support wildcard for both type and subtype (`*/*`) - - deps: mime-types@~2.0.9 - -4.11.2 / 2015-02-01 -=================== - - * Fix `res.redirect` double-calling `res.end` for `HEAD` requests - * deps: accepts@~1.2.3 - - deps: mime-types@~2.0.8 - * deps: proxy-addr@~1.0.6 - - deps: ipaddr.js@0.1.8 - * deps: type-is@~1.5.6 - - deps: mime-types@~2.0.8 - -4.11.1 / 2015-01-20 -=================== - - * deps: send@0.11.1 - - Fix root path disclosure - * deps: serve-static@~1.8.1 - - Fix redirect loop in Node.js 0.11.14 - - Fix root path disclosure - - deps: send@0.11.1 - -4.11.0 / 2015-01-13 -=================== - - * Add `res.append(field, val)` to append headers - * Deprecate leading `:` in `name` for `app.param(name, fn)` - * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead - * Deprecate `app.param(fn)` - * Fix `OPTIONS` responses to include the `HEAD` method properly - * Fix `res.sendFile` not always detecting aborted connection - * Match routes iteratively to prevent stack overflows - * deps: accepts@~1.2.2 - - deps: mime-types@~2.0.7 - - deps: negotiator@0.5.0 - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - * deps: serve-static@~1.8.0 - - deps: send@0.11.0 - -4.10.8 / 2015-01-13 -=================== - - * Fix crash from error within `OPTIONS` response handler - * deps: proxy-addr@~1.0.5 - - deps: ipaddr.js@0.1.6 - -4.10.7 / 2015-01-04 -=================== - - * Fix `Allow` header for `OPTIONS` to not contain duplicate methods - * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304 - * deps: debug@~2.1.1 - * deps: finalhandler@0.3.3 - - deps: debug@~2.1.1 - - deps: on-finished@~2.2.0 - * deps: methods@~1.1.1 - * deps: on-finished@~2.2.0 - * deps: serve-static@~1.7.2 - - Fix potential open redirect when mounted at root - * deps: type-is@~1.5.5 - - deps: mime-types@~2.0.7 - -4.10.6 / 2014-12-12 -=================== - - * Fix exception in `req.fresh`/`req.stale` without response headers - -4.10.5 / 2014-12-10 -=================== - - * Fix `res.send` double-calling `res.end` for `HEAD` requests - * deps: accepts@~1.1.4 - - deps: mime-types@~2.0.4 - * deps: type-is@~1.5.4 - - deps: mime-types@~2.0.4 - -4.10.4 / 2014-11-24 -=================== - - * Fix `res.sendfile` logging standard write errors - -4.10.3 / 2014-11-23 -=================== - - * Fix `res.sendFile` logging standard write errors - * deps: etag@~1.5.1 - * deps: proxy-addr@~1.0.4 - - deps: ipaddr.js@0.1.5 - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - -4.10.2 / 2014-11-09 -=================== - - * Correctly invoke async router callback asynchronously - * deps: accepts@~1.1.3 - - deps: mime-types@~2.0.3 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -4.10.1 / 2014-10-28 -=================== - - * Fix handling of URLs containing `://` in the path - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -4.10.0 / 2014-10-23 -=================== - - * Add support for `app.set('views', array)` - - Views are looked up in sequence in array of directories - * Fix `res.send(status)` to mention `res.sendStatus(status)` - * Fix handling of invalid empty URLs - * Use `content-disposition` module for `res.attachment`/`res.download` - - Sends standards-compliant `Content-Disposition` header - - Full Unicode support - * Use `path.resolve` in view lookup - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - * deps: finalhandler@0.3.2 - - Terminate in progress response only on error - - Use `on-finished` to determine request status - - deps: debug@~2.1.0 - - deps: on-finished@~2.1.1 - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: send@0.10.1 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - - deps: on-finished@~2.1.1 - * deps: serve-static@~1.7.1 - - deps: send@0.10.1 - -4.9.8 / 2014-10-17 -================== - - * Fix `res.redirect` body when redirect status specified - * deps: accepts@~1.1.2 - - Fix error when media type has invalid parameter - - deps: negotiator@0.4.9 - -4.9.7 / 2014-10-10 -================== - - * Fix using same param name in array of paths - -4.9.6 / 2014-10-08 -================== - - * deps: accepts@~1.1.1 - - deps: mime-types@~2.0.2 - - deps: negotiator@0.4.8 - * deps: serve-static@~1.6.4 - - Fix redirect loop when index file serving disabled - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -4.9.5 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - * deps: proxy-addr@~1.0.3 - - Use `forwarded` npm module - * deps: send@0.9.3 - - deps: etag@~1.4.0 - * deps: serve-static@~1.6.3 - - deps: send@0.9.3 - -4.9.4 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -4.9.3 / 2014-09-18 -================== - - * deps: proxy-addr@~1.0.2 - - Fix a global leak when multiple subnets are trusted - - deps: ipaddr.js@0.1.3 - -4.9.2 / 2014-09-17 -================== - - * Fix regression for empty string `path` in `app.use` - * Fix `router.use` to accept array of middleware without path - * Improve error message for bad `app.use` arguments - -4.9.1 / 2014-09-16 -================== - - * Fix `app.use` to accept array of middleware without path - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - * deps: serve-static@~1.6.2 - - deps: send@0.9.2 - -4.9.0 / 2014-09-08 -================== - - * Add `res.sendStatus` - * Invoke callback for sendfile when client aborts - - Applies to `res.sendFile`, `res.sendfile`, and `res.download` - - `err` will be populated with request aborted error - * Support IP address host in `req.subdomains` - * Use `etag` to generate `ETag` headers - * deps: accepts@~1.1.0 - - update `mime-types` - * deps: cookie-signature@1.0.5 - * deps: debug@~2.0.0 - * deps: finalhandler@0.2.0 - - Set `X-Content-Type-Options: nosniff` header - - deps: debug@~2.0.0 - * deps: fresh@0.2.4 - * deps: media-typer@0.3.0 - - Throw error when parameter format invalid on parse - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: range-parser@~1.0.2 - * deps: send@0.9.1 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - - deps: fresh@0.2.4 - * deps: serve-static@~1.6.1 - - Add `lastModified` option - - deps: send@0.9.1 - * deps: type-is@~1.5.1 - - fix `hasbody` to be true for `content-length: 0` - - deps: media-typer@0.3.0 - - deps: mime-types@~2.0.1 - * deps: vary@~1.0.0 - - Accept valid `Vary` header string as `field` - -4.8.8 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - * deps: serve-static@~1.5.4 - - deps: send@0.8.5 - -4.8.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -4.8.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -4.8.5 / 2014-08-18 -================== - - * deps: send@0.8.3 - - deps: destroy@1.0.3 - - deps: on-finished@2.1.0 - * deps: serve-static@~1.5.3 - - deps: send@0.8.3 - -4.8.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: serve-static@~1.5.2 - - deps: send@0.8.2 - -4.8.3 / 2014-08-10 -================== - - * deps: parseurl@~1.3.0 - * deps: qs@1.2.1 - * deps: serve-static@~1.5.1 - - Fix parsing of weird `req.originalUrl` values - - deps: parseurl@~1.3.0 - - deps: utils-merge@1.0.0 - -4.8.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -4.8.1 / 2014-08-06 -================== - - * fix incorrect deprecation warnings on `res.download` - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -4.8.0 / 2014-08-05 -================== - - * add `res.sendFile` - - accepts a file system path instead of a URL - - requires an absolute path or `root` option specified - * deprecate `res.sendfile` -- use `res.sendFile` instead - * support mounted app as any argument to `app.use()` - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - * deps: send@0.8.1 - - Add `extensions` option - * deps: serve-static@~1.5.0 - - Add `extensions` option - - deps: send@0.8.1 - -4.7.4 / 2014-08-04 -================== - - * fix `res.sendfile` regression for serving directory index files - * deps: send@0.7.4 - - Fix incorrect 403 on Windows and Node.js 0.11 - - Fix serving index files without root dir - * deps: serve-static@~1.4.4 - - deps: send@0.7.4 - -4.7.3 / 2014-08-04 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - * deps: serve-static@~1.4.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - - deps: send@0.7.3 - -4.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - * deps: send@0.7.2 - - deps: depd@0.4.4 - * deps: serve-static@~1.4.2 - -4.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - * deps: send@0.7.1 - - deps: depd@0.4.3 - * deps: serve-static@~1.4.1 - -4.7.0 / 2014-07-25 -================== - - * fix `req.protocol` for proxy-direct connections - * configurable query parser with `app.set('query parser', parser)` - - `app.set('query parser', 'extended')` parse with "qs" module - - `app.set('query parser', 'simple')` parse with "querystring" core module - - `app.set('query parser', false)` disable query string parsing - - `app.set('query parser', true)` enable simple parsing - * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead - * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead - * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: finalhandler@0.1.0 - - Respond after request fully read - - deps: debug@1.0.4 - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - Cap `maxAge` value to 1 year - - deps: debug@1.0.4 - - deps: depd@0.4.2 - * deps: serve-static@~1.4.0 - - deps: parseurl@~1.2.0 - - deps: send@0.7.0 - * perf: prevent multiple `Buffer` creation in `res.send` - -4.6.1 / 2014-07-12 -================== - - * fix `subapp.mountpath` regression for `app.use(subapp)` - -4.6.0 / 2014-07-11 -================== - - * accept multiple callbacks to `app.use()` - * add explicit "Rosetta Flash JSONP abuse" protection - - previous versions are not vulnerable; this is just explicit protection - * catch errors in multiple `req.param(name, fn)` handlers - * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead - * fix `res.send(status, num)` to send `num` as json (not error) - * remove unnecessary escaping when `res.jsonp` returns JSON response - * support non-string `path` in `app.use(path, fn)` - - supports array of paths - - supports `RegExp` - * router: fix optimization on router exit - * router: refactor location of `try` blocks - * router: speed up standard `app.use(fn)` - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - * deps: finalhandler@0.0.3 - - deps: debug@1.0.3 - * deps: methods@1.1.0 - - add `CONNECT` - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - * deps: path-to-regexp@0.1.3 - * deps: send@0.6.0 - - deps: debug@1.0.3 - * deps: serve-static@~1.3.2 - - deps: parseurl@~1.1.3 - - deps: send@0.6.0 - * perf: fix arguments reassign deopt in some `res` methods - -4.5.1 / 2014-07-06 -================== - - * fix routing regression when altering `req.method` - -4.5.0 / 2014-07-04 -================== - - * add deprecation message to non-plural `req.accepts*` - * add deprecation message to `res.send(body, status)` - * add deprecation message to `res.vary()` - * add `headers` option to `res.sendfile` - - use to set headers on successful file transfer - * add `mergeParams` option to `Router` - - merges `req.params` from parent routes - * add `req.hostname` -- correct name for what `req.host` returns - * deprecate things with `depd` module - * deprecate `req.host` -- use `req.hostname` instead - * fix behavior when handling request without routes - * fix handling when `route.all` is only route - * invoke `router.param()` only when route matches - * restore `req.params` after invoking router - * use `finalhandler` for final response handling - * use `media-typer` to alter content-type charset - * deps: accepts@~1.0.7 - * deps: send@0.5.0 - - Accept string for `maxage` (converted by `ms`) - - Include link in default redirect response - * deps: serve-static@~1.3.0 - - Accept string for `maxAge` (converted by `ms`) - - Add `setHeaders` option - - Include HTML link in redirect response - - deps: send@0.5.0 - * deps: type-is@~1.3.2 - -4.4.5 / 2014-06-26 -================== - - * deps: cookie-signature@1.0.4 - - fix for timing attacks - -4.4.4 / 2014-06-20 -================== - - * fix `res.attachment` Unicode filenames in Safari - * fix "trim prefix" debug message in `express:router` - * deps: accepts@~1.0.5 - * deps: buffer-crc32@0.2.3 - -4.4.3 / 2014-06-11 -================== - - * fix persistence of modified `req.params[name]` from `app.param()` - * deps: accepts@1.0.3 - - deps: negotiator@0.4.6 - * deps: debug@1.0.2 - * deps: send@0.4.3 - - Do not throw uncatchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - * deps: serve-static@1.2.3 - - Do not throw uncatchable error on file open race condition - - deps: send@0.4.3 - -4.4.2 / 2014-06-09 -================== - - * fix catching errors from top-level handlers - * use `vary` module for `res.vary` - * deps: debug@1.0.1 - * deps: proxy-addr@1.0.1 - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - * deps: serve-static@1.2.2 - - fix "event emitter leak" warnings - - deps: send@0.4.2 - * deps: type-is@1.2.1 - -4.4.1 / 2014-06-02 -================== - - * deps: methods@1.0.1 - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - * deps: serve-static@1.2.1 - - use `escape-html` for escaping - - deps: send@0.4.1 - -4.4.0 / 2014-05-30 -================== - - * custom etag control with `app.set('etag', val)` - - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation - - `app.set('etag', 'weak')` weak tag - - `app.set('etag', 'strong')` strong etag - - `app.set('etag', false)` turn off - - `app.set('etag', true)` standard etag - * mark `res.send` ETag as weak and reduce collisions - * update accepts to 1.0.2 - - Fix interpretation when header not in request - * update send to 0.4.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: debug@0.8.1 - * update serve-static to 1.2.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: send@0.4.0 - -4.3.2 / 2014-05-28 -================== - - * fix handling of errors from `router.param()` callbacks - -4.3.1 / 2014-05-23 -================== - - * revert "fix behavior of multiple `app.VERB` for the same path" - - this caused a regression in the order of route execution - -4.3.0 / 2014-05-21 -================== - - * add `req.baseUrl` to access the path stripped from `req.url` in routes - * fix behavior of multiple `app.VERB` for the same path - * fix issue routing requests among sub routers - * invoke `router.param()` only when necessary instead of every match - * proper proxy trust with `app.set('trust proxy', trust)` - - `app.set('trust proxy', 1)` trust first hop - - `app.set('trust proxy', 'loopback')` trust loopback addresses - - `app.set('trust proxy', '10.0.0.1')` trust single IP - - `app.set('trust proxy', '10.0.0.1/16')` trust subnet - - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list - - `app.set('trust proxy', false)` turn off - - `app.set('trust proxy', true)` trust everything - * set proper `charset` in `Content-Type` for `res.send` - * update type-is to 1.2.0 - - support suffix matching - -4.2.0 / 2014-05-11 -================== - - * deprecate `app.del()` -- use `app.delete()` instead - * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead - - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` - * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead - - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` - * fix `req.next` when inside router instance - * include `ETag` header in `HEAD` requests - * keep previous `Content-Type` for `res.jsonp` - * support PURGE method - - add `app.purge` - - add `router.purge` - - include PURGE in `app.all` - * update debug to 0.8.0 - - add `enable()` method - - change from stderr to stdout - * update methods to 1.0.0 - - add PURGE - -4.1.2 / 2014-05-08 -================== - - * fix `req.host` for IPv6 literals - * fix `res.jsonp` error if callback param is object - -4.1.1 / 2014-04-27 -================== - - * fix package.json to reflect supported node version - -4.1.0 / 2014-04-24 -================== - - * pass options from `res.sendfile` to `send` - * preserve casing of headers in `res.header` and `res.set` - * support unicode file names in `res.attachment` and `res.download` - * update accepts to 1.0.1 - - deps: negotiator@0.4.0 - * update cookie to 0.1.2 - - Fix for maxAge == 0 - - made compat with expires field - * update send to 0.3.0 - - Accept API options in options object - - Coerce option types - - Control whether to generate etags - - Default directory access to 403 when index disabled - - Fix sending files with dots without root set - - Include file path in etag - - Make "Can't set headers after they are sent." catchable - - Send full entity-body for multi range requests - - Set etags to "weak" - - Support "If-Range" header - - Support multiple index paths - - deps: mime@1.2.11 - * update serve-static to 1.1.0 - - Accept options directly to `send` module - - Resolve relative paths at middleware setup - - Use parseurl to parse the URL from request - - deps: send@0.3.0 - * update type-is to 1.1.0 - - add non-array values support - - add `multipart` as a shorthand - -4.0.0 / 2014-04-09 -================== - - * remove: - - node 0.8 support - - connect and connect's patches except for charset handling - - express(1) - moved to [express-generator](https://github.com/expressjs/generator) - - `express.createServer()` - it has been deprecated for a long time. Use `express()` - - `app.configure` - use logic in your own app code - - `app.router` - is removed - - `req.auth` - use `basic-auth` instead - - `req.accepted*` - use `req.accepts*()` instead - - `res.location` - relative URL resolution is removed - - `res.charset` - include the charset in the content type when using `res.set()` - - all bundled middleware except `static` - * change: - - `app.route` -> `app.mountpath` when mounting an express app in another express app - - `json spaces` no longer enabled by default in development - - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings` - - `req.params` is now an object instead of an array - - `res.locals` is no longer a function. It is a plain js object. Treat it as such. - - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object - * refactor: - - `req.accepts*` with [accepts](https://github.com/expressjs/accepts) - - `req.is` with [type-is](https://github.com/expressjs/type-is) - - [path-to-regexp](https://github.com/component/path-to-regexp) - * add: - - `app.router()` - returns the app Router instance - - `app.route()` - Proxy to the app's `Router#route()` method to create a new route - - Router & Route - public API - -3.21.2 / 2015-07-31 -=================== - - * deps: connect@2.30.2 - - deps: body-parser@~1.13.3 - - deps: compression@~1.5.2 - - deps: errorhandler@~1.4.2 - - deps: method-override@~2.3.5 - - deps: serve-index@~1.7.2 - - deps: type-is@~1.6.6 - - deps: vhost@~3.0.1 - * deps: vary@~1.0.1 - - Fix setting empty header from empty `field` - - perf: enable strict mode - - perf: remove argument reassignments - -3.21.1 / 2015-07-05 -=================== - - * deps: basic-auth@~1.0.3 - * deps: connect@2.30.1 - - deps: body-parser@~1.13.2 - - deps: compression@~1.5.1 - - deps: errorhandler@~1.4.1 - - deps: morgan@~1.6.1 - - deps: pause@0.1.0 - - deps: qs@4.0.0 - - deps: serve-index@~1.7.1 - - deps: type-is@~1.6.4 - -3.21.0 / 2015-06-18 -=================== - - * deps: basic-auth@1.0.2 - - perf: enable strict mode - - perf: hoist regular expression - - perf: parse with regular expressions - - perf: remove argument reassignment - * deps: connect@2.30.0 - - deps: body-parser@~1.13.1 - - deps: bytes@2.1.0 - - deps: compression@~1.5.0 - - deps: cookie@0.1.3 - - deps: cookie-parser@~1.3.5 - - deps: csurf@~1.8.3 - - deps: errorhandler@~1.4.0 - - deps: express-session@~1.11.3 - - deps: finalhandler@0.4.0 - - deps: fresh@0.3.0 - - deps: morgan@~1.6.0 - - deps: serve-favicon@~2.3.0 - - deps: serve-index@~1.7.0 - - deps: serve-static@~1.10.0 - - deps: type-is@~1.6.3 - * deps: cookie@0.1.3 - - perf: deduce the scope of try-catch deopt - - perf: remove argument reassignments - * deps: escape-html@1.0.2 - * deps: etag@~1.7.0 - - Always include entity length in ETags for hash length extensions - - Generate non-Stats ETags using MD5 only (no longer CRC32) - - Improve stat performance by removing hashing - - Improve support for JXcore - - Remove base64 padding in ETags to shorten - - Support "fake" stats objects in environments without fs - - Use MD5 instead of MD4 in weak ETags over 1KB - * deps: fresh@0.3.0 - - Add weak `ETag` matching support - * deps: mkdirp@0.5.1 - - Work in global strict mode - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - -3.20.3 / 2015-05-17 -=================== - - * deps: connect@2.29.2 - - deps: body-parser@~1.12.4 - - deps: compression@~1.4.4 - - deps: connect-timeout@~1.6.2 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: errorhandler@~1.3.6 - - deps: finalhandler@0.3.6 - - deps: method-override@~2.3.3 - - deps: morgan@~1.5.3 - - deps: qs@2.4.2 - - deps: response-time@~2.3.1 - - deps: serve-favicon@~2.2.1 - - deps: serve-index@~1.6.4 - - deps: serve-static@~1.9.3 - - deps: type-is@~1.6.2 - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - * deps: depd@~1.0.1 - * deps: proxy-addr@~1.0.8 - - deps: ipaddr.js@1.0.1 - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - -3.20.2 / 2015-03-16 -=================== - - * deps: connect@2.29.1 - - deps: body-parser@~1.12.2 - - deps: compression@~1.4.3 - - deps: connect-timeout@~1.6.1 - - deps: debug@~2.1.3 - - deps: errorhandler@~1.3.5 - - deps: express-session@~1.10.4 - - deps: finalhandler@0.3.4 - - deps: method-override@~2.3.2 - - deps: morgan@~1.5.2 - - deps: qs@2.4.1 - - deps: serve-index@~1.6.3 - - deps: serve-static@~1.9.2 - - deps: type-is@~1.6.1 - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: merge-descriptors@1.0.0 - * deps: proxy-addr@~1.0.7 - - deps: ipaddr.js@0.1.9 - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - -3.20.1 / 2015-02-28 -=================== - - * Fix `req.host` when using "trust proxy" hops count - * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count - -3.20.0 / 2015-02-18 -=================== - - * Fix `"trust proxy"` setting to inherit when app is mounted - * Generate `ETag`s for all request responses - - No longer restricted to only responses for `GET` and `HEAD` requests - * Use `content-type` to parse `Content-Type` headers - * deps: connect@2.29.0 - - Use `content-type` to parse `Content-Type` headers - - deps: body-parser@~1.12.0 - - deps: compression@~1.4.1 - - deps: connect-timeout@~1.6.0 - - deps: cookie-parser@~1.3.4 - - deps: cookie-signature@1.0.6 - - deps: csurf@~1.7.0 - - deps: errorhandler@~1.3.4 - - deps: express-session@~1.10.3 - - deps: http-errors@~1.3.1 - - deps: response-time@~2.3.0 - - deps: serve-index@~1.6.2 - - deps: serve-static@~1.9.1 - - deps: type-is@~1.6.0 - * deps: cookie-signature@1.0.6 - * deps: send@0.12.1 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - -3.19.2 / 2015-02-01 -=================== - - * deps: connect@2.28.3 - - deps: compression@~1.3.1 - - deps: csurf@~1.6.6 - - deps: errorhandler@~1.3.3 - - deps: express-session@~1.10.2 - - deps: serve-index@~1.6.1 - - deps: type-is@~1.5.6 - * deps: proxy-addr@~1.0.6 - - deps: ipaddr.js@0.1.8 - -3.19.1 / 2015-01-20 -=================== - - * deps: connect@2.28.2 - - deps: body-parser@~1.10.2 - - deps: serve-static@~1.8.1 - * deps: send@0.11.1 - - Fix root path disclosure - -3.19.0 / 2015-01-09 -=================== - - * Fix `OPTIONS` responses to include the `HEAD` method property - * Use `readline` for prompt in `express(1)` - * deps: commander@2.6.0 - * deps: connect@2.28.1 - - deps: body-parser@~1.10.1 - - deps: compression@~1.3.0 - - deps: connect-timeout@~1.5.0 - - deps: csurf@~1.6.4 - - deps: debug@~2.1.1 - - deps: errorhandler@~1.3.2 - - deps: express-session@~1.10.1 - - deps: finalhandler@0.3.3 - - deps: method-override@~2.3.1 - - deps: morgan@~1.5.1 - - deps: serve-favicon@~2.2.0 - - deps: serve-index@~1.6.0 - - deps: serve-static@~1.8.0 - - deps: type-is@~1.5.5 - * deps: debug@~2.1.1 - * deps: methods@~1.1.1 - * deps: proxy-addr@~1.0.5 - - deps: ipaddr.js@0.1.6 - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - -3.18.6 / 2014-12-12 -=================== - - * Fix exception in `req.fresh`/`req.stale` without response headers - -3.18.5 / 2014-12-11 -=================== - - * deps: connect@2.27.6 - - deps: compression@~1.2.2 - - deps: express-session@~1.9.3 - - deps: http-errors@~1.2.8 - - deps: serve-index@~1.5.3 - - deps: type-is@~1.5.4 - -3.18.4 / 2014-11-23 -=================== - - * deps: connect@2.27.4 - - deps: body-parser@~1.9.3 - - deps: compression@~1.2.1 - - deps: errorhandler@~1.2.3 - - deps: express-session@~1.9.2 - - deps: qs@2.3.3 - - deps: serve-favicon@~2.1.7 - - deps: serve-static@~1.5.1 - - deps: type-is@~1.5.3 - * deps: etag@~1.5.1 - * deps: proxy-addr@~1.0.4 - - deps: ipaddr.js@0.1.5 - -3.18.3 / 2014-11-09 -=================== - - * deps: connect@2.27.3 - - Correctly invoke async callback asynchronously - - deps: csurf@~1.6.3 - -3.18.2 / 2014-10-28 -=================== - - * deps: connect@2.27.2 - - Fix handling of URLs containing `://` in the path - - deps: body-parser@~1.9.2 - - deps: qs@2.3.2 - -3.18.1 / 2014-10-22 -=================== - - * Fix internal `utils.merge` deprecation warnings - * deps: connect@2.27.1 - - deps: body-parser@~1.9.1 - - deps: express-session@~1.9.1 - - deps: finalhandler@0.3.2 - - deps: morgan@~1.4.1 - - deps: qs@2.3.0 - - deps: serve-static@~1.7.1 - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -3.18.0 / 2014-10-17 -=================== - - * Use `content-disposition` module for `res.attachment`/`res.download` - - Sends standards-compliant `Content-Disposition` header - - Full Unicode support - * Use `etag` module to generate `ETag` headers - * deps: connect@2.27.0 - - Use `http-errors` module for creating errors - - Use `utils-merge` module for merging objects - - deps: body-parser@~1.9.0 - - deps: compression@~1.2.0 - - deps: connect-timeout@~1.4.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: express-session@~1.9.0 - - deps: finalhandler@0.3.1 - - deps: method-override@~2.3.0 - - deps: morgan@~1.4.0 - - deps: response-time@~2.2.0 - - deps: serve-favicon@~2.1.6 - - deps: serve-index@~1.5.0 - - deps: serve-static@~1.7.0 - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -3.17.8 / 2014-10-15 -=================== - - * deps: connect@2.26.6 - - deps: compression@~1.1.2 - - deps: csurf@~1.6.2 - - deps: errorhandler@~1.2.2 - -3.17.7 / 2014-10-08 -=================== - - * deps: connect@2.26.5 - - Fix accepting non-object arguments to `logger` - - deps: serve-static@~1.6.4 - -3.17.6 / 2014-10-02 -=================== - - * deps: connect@2.26.4 - - deps: morgan@~1.3.2 - - deps: type-is@~1.5.2 - -3.17.5 / 2014-09-24 -=================== - - * deps: connect@2.26.3 - - deps: body-parser@~1.8.4 - - deps: serve-favicon@~2.1.5 - - deps: serve-static@~1.6.3 - * deps: proxy-addr@~1.0.3 - - Use `forwarded` npm module - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -3.17.4 / 2014-09-19 -=================== - - * deps: connect@2.26.2 - - deps: body-parser@~1.8.3 - - deps: qs@2.2.4 - -3.17.3 / 2014-09-18 -=================== - - * deps: proxy-addr@~1.0.2 - - Fix a global leak when multiple subnets are trusted - - deps: ipaddr.js@0.1.3 - -3.17.2 / 2014-09-15 -=================== - - * Use `crc` instead of `buffer-crc32` for speed - * deps: connect@2.26.1 - - deps: body-parser@~1.8.2 - - deps: depd@0.4.5 - - deps: express-session@~1.8.2 - - deps: morgan@~1.3.1 - - deps: serve-favicon@~2.1.3 - - deps: serve-static@~1.6.2 - * deps: depd@0.4.5 - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -3.17.1 / 2014-09-08 -=================== - - * Fix error in `req.subdomains` on empty host - -3.17.0 / 2014-09-08 -=================== - - * Support `X-Forwarded-Host` in `req.subdomains` - * Support IP address host in `req.subdomains` - * deps: connect@2.26.0 - - deps: body-parser@~1.8.1 - - deps: compression@~1.1.0 - - deps: connect-timeout@~1.3.0 - - deps: cookie-parser@~1.3.3 - - deps: cookie-signature@1.0.5 - - deps: csurf@~1.6.1 - - deps: debug@~2.0.0 - - deps: errorhandler@~1.2.0 - - deps: express-session@~1.8.1 - - deps: finalhandler@0.2.0 - - deps: fresh@0.2.4 - - deps: media-typer@0.3.0 - - deps: method-override@~2.2.0 - - deps: morgan@~1.3.0 - - deps: qs@2.2.3 - - deps: serve-favicon@~2.1.3 - - deps: serve-index@~1.2.1 - - deps: serve-static@~1.6.1 - - deps: type-is@~1.5.1 - - deps: vhost@~3.0.0 - * deps: cookie-signature@1.0.5 - * deps: debug@~2.0.0 - * deps: fresh@0.2.4 - * deps: media-typer@0.3.0 - - Throw error when parameter format invalid on parse - * deps: range-parser@~1.0.2 - * deps: send@0.9.1 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - - deps: fresh@0.2.4 - * deps: vary@~1.0.0 - - Accept valid `Vary` header string as `field` - -3.16.10 / 2014-09-04 -==================== - - * deps: connect@2.25.10 - - deps: serve-static@~1.5.4 - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -3.16.9 / 2014-08-29 -=================== - - * deps: connect@2.25.9 - - deps: body-parser@~1.6.7 - - deps: qs@2.2.2 - -3.16.8 / 2014-08-27 -=================== - - * deps: connect@2.25.8 - - deps: body-parser@~1.6.6 - - deps: csurf@~1.4.1 - - deps: qs@2.2.0 - -3.16.7 / 2014-08-18 -=================== - - * deps: connect@2.25.7 - - deps: body-parser@~1.6.5 - - deps: express-session@~1.7.6 - - deps: morgan@~1.2.3 - - deps: serve-static@~1.5.3 - * deps: send@0.8.3 - - deps: destroy@1.0.3 - - deps: on-finished@2.1.0 - -3.16.6 / 2014-08-14 -=================== - - * deps: connect@2.25.6 - - deps: body-parser@~1.6.4 - - deps: qs@1.2.2 - - deps: serve-static@~1.5.2 - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -3.16.5 / 2014-08-11 -=================== - - * deps: connect@2.25.5 - - Fix backwards compatibility in `logger` - -3.16.4 / 2014-08-10 -=================== - - * Fix original URL parsing in `res.location` - * deps: connect@2.25.4 - - Fix `query` middleware breaking with argument - - deps: body-parser@~1.6.3 - - deps: compression@~1.0.11 - - deps: connect-timeout@~1.2.2 - - deps: express-session@~1.7.5 - - deps: method-override@~2.1.3 - - deps: on-headers@~1.0.0 - - deps: parseurl@~1.3.0 - - deps: qs@1.2.1 - - deps: response-time@~2.0.1 - - deps: serve-index@~1.1.6 - - deps: serve-static@~1.5.1 - * deps: parseurl@~1.3.0 - -3.16.3 / 2014-08-07 -=================== - - * deps: connect@2.25.3 - - deps: multiparty@3.3.2 - -3.16.2 / 2014-08-07 -=================== - - * deps: connect@2.25.2 - - deps: body-parser@~1.6.2 - - deps: qs@1.2.0 - -3.16.1 / 2014-08-06 -=================== - - * deps: connect@2.25.1 - - deps: body-parser@~1.6.1 - - deps: qs@1.1.0 - -3.16.0 / 2014-08-05 -=================== - - * deps: connect@2.25.0 - - deps: body-parser@~1.6.0 - - deps: compression@~1.0.10 - - deps: csurf@~1.4.0 - - deps: express-session@~1.7.4 - - deps: qs@1.0.2 - - deps: serve-static@~1.5.0 - * deps: send@0.8.1 - - Add `extensions` option - -3.15.3 / 2014-08-04 -=================== - - * fix `res.sendfile` regression for serving directory index files - * deps: connect@2.24.3 - - deps: serve-index@~1.1.5 - - deps: serve-static@~1.4.4 - * deps: send@0.7.4 - - Fix incorrect 403 on Windows and Node.js 0.11 - - Fix serving index files without root dir - -3.15.2 / 2014-07-27 -=================== - - * deps: connect@2.24.2 - - deps: body-parser@~1.5.2 - - deps: depd@0.4.4 - - deps: express-session@~1.7.2 - - deps: morgan@~1.2.2 - - deps: serve-static@~1.4.2 - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - * deps: send@0.7.2 - - deps: depd@0.4.4 - -3.15.1 / 2014-07-26 -=================== - - * deps: connect@2.24.1 - - deps: body-parser@~1.5.1 - - deps: depd@0.4.3 - - deps: express-session@~1.7.1 - - deps: morgan@~1.2.1 - - deps: serve-index@~1.1.4 - - deps: serve-static@~1.4.1 - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - * deps: send@0.7.1 - - deps: depd@0.4.3 - -3.15.0 / 2014-07-22 -=================== - - * Fix `req.protocol` for proxy-direct connections - * Pass options from `res.sendfile` to `send` - * deps: connect@2.24.0 - - deps: body-parser@~1.5.0 - - deps: compression@~1.0.9 - - deps: connect-timeout@~1.2.1 - - deps: debug@1.0.4 - - deps: depd@0.4.2 - - deps: express-session@~1.7.0 - - deps: finalhandler@0.1.0 - - deps: method-override@~2.1.2 - - deps: morgan@~1.2.0 - - deps: multiparty@3.3.1 - - deps: parseurl@~1.2.0 - - deps: serve-static@~1.4.0 - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - Cap `maxAge` value to 1 year - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -3.14.0 / 2014-07-11 -=================== - - * add explicit "Rosetta Flash JSONP abuse" protection - - previous versions are not vulnerable; this is just explicit protection - * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead - * fix `res.send(status, num)` to send `num` as json (not error) - * remove unnecessary escaping when `res.jsonp` returns JSON response - * deps: basic-auth@1.0.0 - - support empty password - - support empty username - * deps: connect@2.23.0 - - deps: debug@1.0.3 - - deps: express-session@~1.6.4 - - deps: method-override@~2.1.0 - - deps: parseurl@~1.1.3 - - deps: serve-static@~1.3.1 - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - * deps: methods@1.1.0 - - add `CONNECT` - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -3.13.0 / 2014-07-03 -=================== - - * add deprecation message to `app.configure` - * add deprecation message to `req.auth` - * use `basic-auth` to parse `Authorization` header - * deps: connect@2.22.0 - - deps: csurf@~1.3.0 - - deps: express-session@~1.6.1 - - deps: multiparty@3.3.0 - - deps: serve-static@~1.3.0 - * deps: send@0.5.0 - - Accept string for `maxage` (converted by `ms`) - - Include link in default redirect response - -3.12.1 / 2014-06-26 -=================== - - * deps: connect@2.21.1 - - deps: cookie-parser@1.3.2 - - deps: cookie-signature@1.0.4 - - deps: express-session@~1.5.2 - - deps: type-is@~1.3.2 - * deps: cookie-signature@1.0.4 - - fix for timing attacks - -3.12.0 / 2014-06-21 -=================== - - * use `media-typer` to alter content-type charset - * deps: connect@2.21.0 - - deprecate `connect(middleware)` -- use `app.use(middleware)` instead - - deprecate `connect.createServer()` -- use `connect()` instead - - fix `res.setHeader()` patch to work with get -> append -> set pattern - - deps: compression@~1.0.8 - - deps: errorhandler@~1.1.1 - - deps: express-session@~1.5.0 - - deps: serve-index@~1.1.3 - -3.11.0 / 2014-06-19 -=================== - - * deprecate things with `depd` module - * deps: buffer-crc32@0.2.3 - * deps: connect@2.20.2 - - deprecate `verify` option to `json` -- use `body-parser` npm module instead - - deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead - - deprecate things with `depd` module - - use `finalhandler` for final response handling - - use `media-typer` to parse `content-type` for charset - - deps: body-parser@1.4.3 - - deps: connect-timeout@1.1.1 - - deps: cookie-parser@1.3.1 - - deps: csurf@1.2.2 - - deps: errorhandler@1.1.0 - - deps: express-session@1.4.0 - - deps: multiparty@3.2.9 - - deps: serve-index@1.1.2 - - deps: type-is@1.3.1 - - deps: vhost@2.0.0 - -3.10.5 / 2014-06-11 -=================== - - * deps: connect@2.19.6 - - deps: body-parser@1.3.1 - - deps: compression@1.0.7 - - deps: debug@1.0.2 - - deps: serve-index@1.1.1 - - deps: serve-static@1.2.3 - * deps: debug@1.0.2 - * deps: send@0.4.3 - - Do not throw uncatchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -3.10.4 / 2014-06-09 -=================== - - * deps: connect@2.19.5 - - fix "event emitter leak" warnings - - deps: csurf@1.2.1 - - deps: debug@1.0.1 - - deps: serve-static@1.2.2 - - deps: type-is@1.2.1 - * deps: debug@1.0.1 - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: finished@1.2.1 - - deps: debug@1.0.1 - -3.10.3 / 2014-06-05 -=================== - - * use `vary` module for `res.vary` - * deps: connect@2.19.4 - - deps: errorhandler@1.0.2 - - deps: method-override@2.0.2 - - deps: serve-favicon@2.0.1 - * deps: debug@1.0.0 - -3.10.2 / 2014-06-03 -=================== - - * deps: connect@2.19.3 - - deps: compression@1.0.6 - -3.10.1 / 2014-06-03 -=================== - - * deps: connect@2.19.2 - - deps: compression@1.0.4 - * deps: proxy-addr@1.0.1 - -3.10.0 / 2014-06-02 -=================== - - * deps: connect@2.19.1 - - deprecate `methodOverride()` -- use `method-override` npm module instead - - deps: body-parser@1.3.0 - - deps: method-override@2.0.1 - - deps: multiparty@3.2.8 - - deps: response-time@2.0.0 - - deps: serve-static@1.2.1 - * deps: methods@1.0.1 - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -3.9.0 / 2014-05-30 -================== - - * custom etag control with `app.set('etag', val)` - - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation - - `app.set('etag', 'weak')` weak tag - - `app.set('etag', 'strong')` strong etag - - `app.set('etag', false)` turn off - - `app.set('etag', true)` standard etag - * Include ETag in HEAD requests - * mark `res.send` ETag as weak and reduce collisions - * update connect to 2.18.0 - - deps: compression@1.0.3 - - deps: serve-index@1.1.0 - - deps: serve-static@1.2.0 - * update send to 0.4.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: debug@0.8.1 - -3.8.1 / 2014-05-27 -================== - - * update connect to 2.17.3 - - deps: body-parser@1.2.2 - - deps: express-session@1.2.1 - - deps: method-override@1.0.2 - -3.8.0 / 2014-05-21 -================== - - * keep previous `Content-Type` for `res.jsonp` - * set proper `charset` in `Content-Type` for `res.send` - * update connect to 2.17.1 - - fix `res.charset` appending charset when `content-type` has one - - deps: express-session@1.2.0 - - deps: morgan@1.1.1 - - deps: serve-index@1.0.3 - -3.7.0 / 2014-05-18 -================== - - * proper proxy trust with `app.set('trust proxy', trust)` - - `app.set('trust proxy', 1)` trust first hop - - `app.set('trust proxy', 'loopback')` trust loopback addresses - - `app.set('trust proxy', '10.0.0.1')` trust single IP - - `app.set('trust proxy', '10.0.0.1/16')` trust subnet - - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list - - `app.set('trust proxy', false)` turn off - - `app.set('trust proxy', true)` trust everything - * update connect to 2.16.2 - - deprecate `res.headerSent` -- use `res.headersSent` - - deprecate `res.on("header")` -- use on-headers module instead - - fix edge-case in `res.appendHeader` that would append in wrong order - - json: use body-parser - - urlencoded: use body-parser - - dep: bytes@1.0.0 - - dep: cookie-parser@1.1.0 - - dep: csurf@1.2.0 - - dep: express-session@1.1.0 - - dep: method-override@1.0.1 - -3.6.0 / 2014-05-09 -================== - - * deprecate `app.del()` -- use `app.delete()` instead - * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead - - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` - * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead - - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` - * support PURGE method - - add `app.purge` - - add `router.purge` - - include PURGE in `app.all` - * update connect to 2.15.0 - * Add `res.appendHeader` - * Call error stack even when response has been sent - * Patch `res.headerSent` to return Boolean - * Patch `res.headersSent` for node.js 0.8 - * Prevent default 404 handler after response sent - * dep: compression@1.0.2 - * dep: connect-timeout@1.1.0 - * dep: debug@^0.8.0 - * dep: errorhandler@1.0.1 - * dep: express-session@1.0.4 - * dep: morgan@1.0.1 - * dep: serve-favicon@2.0.0 - * dep: serve-index@1.0.2 - * update debug to 0.8.0 - * add `enable()` method - * change from stderr to stdout - * update methods to 1.0.0 - - add PURGE - * update mkdirp to 0.5.0 - -3.5.3 / 2014-05-08 -================== - - * fix `req.host` for IPv6 literals - * fix `res.jsonp` error if callback param is object - -3.5.2 / 2014-04-24 -================== - - * update connect to 2.14.5 - * update cookie to 0.1.2 - * update mkdirp to 0.4.0 - * update send to 0.3.0 - -3.5.1 / 2014-03-25 -================== - - * pin less-middleware in generated app - -3.5.0 / 2014-03-06 -================== - - * bump deps - -3.4.8 / 2014-01-13 -================== - - * prevent incorrect automatic OPTIONS responses #1868 @dpatti - * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi - * throw 400 in case of malformed paths @rlidwka - -3.4.7 / 2013-12-10 -================== - - * update connect - -3.4.6 / 2013-12-01 -================== - - * update connect (raw-body) - -3.4.5 / 2013-11-27 -================== - - * update connect - * res.location: remove leading ./ #1802 @kapouer - * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra - * res.send: always send ETag when content-length > 0 - * router: add Router.all() method - -3.4.4 / 2013-10-29 -================== - - * update connect - * update supertest - * update methods - * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04 - -3.4.3 / 2013-10-23 -================== - - * update connect - -3.4.2 / 2013-10-18 -================== - - * update connect - * downgrade commander - -3.4.1 / 2013-10-15 -================== - - * update connect - * update commander - * jsonp: check if callback is a function - * router: wrap encodeURIComponent in a try/catch #1735 (@lxe) - * res.format: now includes charset @1747 (@sorribas) - * res.links: allow multiple calls @1746 (@sorribas) - -3.4.0 / 2013-09-07 -================== - - * add res.vary(). Closes #1682 - * update connect - -3.3.8 / 2013-09-02 -================== - - * update connect - -3.3.7 / 2013-08-28 -================== - - * update connect - -3.3.6 / 2013-08-27 -================== - - * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients) - * add: req.accepts take an argument list - -3.3.4 / 2013-07-08 -================== - - * update send and connect - -3.3.3 / 2013-07-04 -================== - - * update connect - -3.3.2 / 2013-07-03 -================== - - * update connect - * update send - * remove .version export - -3.3.1 / 2013-06-27 -================== - - * update connect - -3.3.0 / 2013-06-26 -================== - - * update connect - * add support for multiple X-Forwarded-Proto values. Closes #1646 - * change: remove charset from json responses. Closes #1631 - * change: return actual booleans from req.accept* functions - * fix jsonp callback array throw - -3.2.6 / 2013-06-02 -================== - - * update connect - -3.2.5 / 2013-05-21 -================== - - * update connect - * update node-cookie - * add: throw a meaningful error when there is no default engine - * change generation of ETags with res.send() to GET requests only. Closes #1619 - -3.2.4 / 2013-05-09 -================== - - * fix `req.subdomains` when no Host is present - * fix `req.host` when no Host is present, return undefined - -3.2.3 / 2013-05-07 -================== - - * update connect / qs - -3.2.2 / 2013-05-03 -================== - - * update qs - -3.2.1 / 2013-04-29 -================== - - * add app.VERB() paths array deprecation warning - * update connect - * update qs and remove all ~ semver crap - * fix: accept number as value of Signed Cookie - -3.2.0 / 2013-04-15 -================== - - * add "view" constructor setting to override view behaviour - * add req.acceptsEncoding(name) - * add req.acceptedEncodings - * revert cookie signature change causing session race conditions - * fix sorting of Accept values of the same quality - -3.1.2 / 2013-04-12 -================== - - * add support for custom Accept parameters - * update cookie-signature - -3.1.1 / 2013-04-01 -================== - - * add X-Forwarded-Host support to `req.host` - * fix relative redirects - * update mkdirp - * update buffer-crc32 - * remove legacy app.configure() method from app template. - -3.1.0 / 2013-01-25 -================== - - * add support for leading "." in "view engine" setting - * add array support to `res.set()` - * add node 0.8.x to travis.yml - * add "subdomain offset" setting for tweaking `req.subdomains` - * add `res.location(url)` implementing `res.redirect()`-like setting of Location - * use app.get() for x-powered-by setting for inheritance - * fix colons in passwords for `req.auth` - -3.0.6 / 2013-01-04 -================== - - * add http verb methods to Router - * update connect - * fix mangling of the `res.cookie()` options object - * fix jsonp whitespace escape. Closes #1132 - -3.0.5 / 2012-12-19 -================== - - * add throwing when a non-function is passed to a route - * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses - * revert "add 'etag' option" - -3.0.4 / 2012-12-05 -================== - - * add 'etag' option to disable `res.send()` Etags - * add escaping of urls in text/plain in `res.redirect()` - for old browsers interpreting as html - * change crc32 module for a more liberal license - * update connect - -3.0.3 / 2012-11-13 -================== - - * update connect - * update cookie module - * fix cookie max-age - -3.0.2 / 2012-11-08 -================== - - * add OPTIONS to cors example. Closes #1398 - * fix route chaining regression. Closes #1397 - -3.0.1 / 2012-11-01 -================== - - * update connect - -3.0.0 / 2012-10-23 -================== - - * add `make clean` - * add "Basic" check to req.auth - * add `req.auth` test coverage - * add cb && cb(payload) to `res.jsonp()`. Closes #1374 - * add backwards compat for `res.redirect()` status. Closes #1336 - * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 - * update connect - * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 - * remove non-primitive string support for `res.send()` - * fix view-locals example. Closes #1370 - * fix route-separation example - -3.0.0rc5 / 2012-09-18 -================== - - * update connect - * add redis search example - * add static-files example - * add "x-powered-by" setting (`app.disable('x-powered-by')`) - * add "application/octet-stream" redirect Accept test case. Closes #1317 - -3.0.0rc4 / 2012-08-30 -================== - - * add `res.jsonp()`. Closes #1307 - * add "verbose errors" option to error-pages example - * add another route example to express(1) so people are not so confused - * add redis online user activity tracking example - * update connect dep - * fix etag quoting. Closes #1310 - * fix error-pages 404 status - * fix jsonp callback char restrictions - * remove old OPTIONS default response - -3.0.0rc3 / 2012-08-13 -================== - - * update connect dep - * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] - * fix `res.render()` clobbering of "locals" - -3.0.0rc2 / 2012-08-03 -================== - - * add CORS example - * update connect dep - * deprecate `.createServer()` & remove old stale examples - * fix: escape `res.redirect()` link - * fix vhost example - -3.0.0rc1 / 2012-07-24 -================== - - * add more examples to view-locals - * add scheme-relative redirects (`res.redirect("//foo.com")`) support - * update cookie dep - * update connect dep - * update send dep - * fix `express(1)` -h flag, use -H for hogan. Closes #1245 - * fix `res.sendfile()` socket error handling regression - -3.0.0beta7 / 2012-07-16 -================== - - * update connect dep for `send()` root normalization regression - -3.0.0beta6 / 2012-07-13 -================== - - * add `err.view` property for view errors. Closes #1226 - * add "jsonp callback name" setting - * add support for "/foo/:bar*" non-greedy matches - * change `res.sendfile()` to use `send()` module - * change `res.send` to use "response-send" module - * remove `app.locals.use` and `res.locals.use`, use regular middleware - -3.0.0beta5 / 2012-07-03 -================== - - * add "make check" support - * add route-map example - * add `res.json(obj, status)` support back for BC - * add "methods" dep, remove internal methods module - * update connect dep - * update auth example to utilize cores pbkdf2 - * updated tests to use "supertest" - -3.0.0beta4 / 2012-06-25 -================== - - * Added `req.auth` - * Added `req.range(size)` - * Added `res.links(obj)` - * Added `res.send(body, status)` support back for backwards compat - * Added `.default()` support to `res.format()` - * Added 2xx / 304 check to `req.fresh` - * Revert "Added + support to the router" - * Fixed `res.send()` freshness check, respect res.statusCode - -3.0.0beta3 / 2012-06-15 -================== - - * Added hogan `--hjs` to express(1) [nullfirm] - * Added another example to content-negotiation - * Added `fresh` dep - * Changed: `res.send()` always checks freshness - * Fixed: expose connects mime module. Closes #1165 - -3.0.0beta2 / 2012-06-06 -================== - - * Added `+` support to the router - * Added `req.host` - * Changed `req.param()` to check route first - * Update connect dep - -3.0.0beta1 / 2012-06-01 -================== - - * Added `res.format()` callback to override default 406 behaviour - * Fixed `res.redirect()` 406. Closes #1154 - -3.0.0alpha5 / 2012-05-30 -================== - - * Added `req.ip` - * Added `{ signed: true }` option to `res.cookie()` - * Removed `res.signedCookie()` - * Changed: dont reverse `req.ips` - * Fixed "trust proxy" setting check for `req.ips` - -3.0.0alpha4 / 2012-05-09 -================== - - * Added: allow `[]` in jsonp callback. Closes #1128 - * Added `PORT` env var support in generated template. Closes #1118 [benatkin] - * Updated: connect 2.2.2 - -3.0.0alpha3 / 2012-05-04 -================== - - * Added public `app.routes`. Closes #887 - * Added _view-locals_ example - * Added _mvc_ example - * Added `res.locals.use()`. Closes #1120 - * Added conditional-GET support to `res.send()` - * Added: coerce `res.set()` values to strings - * Changed: moved `static()` in generated apps below router - * Changed: `res.send()` only set ETag when not previously set - * Changed connect 2.2.1 dep - * Changed: `make test` now runs unit / acceptance tests - * Fixed req/res proto inheritance - -3.0.0alpha2 / 2012-04-26 -================== - - * Added `make benchmark` back - * Added `res.send()` support for `String` objects - * Added client-side data exposing example - * Added `res.header()` and `req.header()` aliases for BC - * Added `express.createServer()` for BC - * Perf: memoize parsed urls - * Perf: connect 2.2.0 dep - * Changed: make `expressInit()` middleware self-aware - * Fixed: use app.get() for all core settings - * Fixed redis session example - * Fixed session example. Closes #1105 - * Fixed generated express dep. Closes #1078 - -3.0.0alpha1 / 2012-04-15 -================== - - * Added `app.locals.use(callback)` - * Added `app.locals` object - * Added `app.locals(obj)` - * Added `res.locals` object - * Added `res.locals(obj)` - * Added `res.format()` for content-negotiation - * Added `app.engine()` - * Added `res.cookie()` JSON cookie support - * Added "trust proxy" setting - * Added `req.subdomains` - * Added `req.protocol` - * Added `req.secure` - * Added `req.path` - * Added `req.ips` - * Added `req.fresh` - * Added `req.stale` - * Added comma-delimited / array support for `req.accepts()` - * Added debug instrumentation - * Added `res.set(obj)` - * Added `res.set(field, value)` - * Added `res.get(field)` - * Added `app.get(setting)`. Closes #842 - * Added `req.acceptsLanguage()` - * Added `req.acceptsCharset()` - * Added `req.accepted` - * Added `req.acceptedLanguages` - * Added `req.acceptedCharsets` - * Added "json replacer" setting - * Added "json spaces" setting - * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 - * Added `--less` support to express(1) - * Added `express.response` prototype - * Added `express.request` prototype - * Added `express.application` prototype - * Added `app.path()` - * Added `app.render()` - * Added `res.type()` to replace `res.contentType()` - * Changed: `res.redirect()` to add relative support - * Changed: enable "jsonp callback" by default - * Changed: renamed "case sensitive routes" to "case sensitive routing" - * Rewrite of all tests with mocha - * Removed "root" setting - * Removed `res.redirect('home')` support - * Removed `req.notify()` - * Removed `app.register()` - * Removed `app.redirect()` - * Removed `app.is()` - * Removed `app.helpers()` - * Removed `app.dynamicHelpers()` - * Fixed `res.sendfile()` with non-GET. Closes #723 - * Fixed express(1) public dir for windows. Closes #866 - -2.5.9/ 2012-04-02 -================== - - * Added support for PURGE request method [pbuyle] - * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] - -2.5.8 / 2012-02-08 -================== - - * Update mkdirp dep. Closes #991 - -2.5.7 / 2012-02-06 -================== - - * Fixed `app.all` duplicate DELETE requests [mscdex] - -2.5.6 / 2012-01-13 -================== - - * Updated hamljs dev dep. Closes #953 - -2.5.5 / 2012-01-08 -================== - - * Fixed: set `filename` on cached templates [matthewleon] - -2.5.4 / 2012-01-02 -================== - - * Fixed `express(1)` eol on 0.4.x. Closes #947 - -2.5.3 / 2011-12-30 -================== - - * Fixed `req.is()` when a charset is present - -2.5.2 / 2011-12-10 -================== - - * Fixed: express(1) LF -> CRLF for windows - -2.5.1 / 2011-11-17 -================== - - * Changed: updated connect to 1.8.x - * Removed sass.js support from express(1) - -2.5.0 / 2011-10-24 -================== - - * Added ./routes dir for generated app by default - * Added npm install reminder to express(1) app gen - * Added 0.5.x support - * Removed `make test-cov` since it wont work with node 0.5.x - * Fixed express(1) public dir for windows. Closes #866 - -2.4.7 / 2011-10-05 -================== - - * Added mkdirp to express(1). Closes #795 - * Added simple _json-config_ example - * Added shorthand for the parsed request's pathname via `req.path` - * Changed connect dep to 1.7.x to fix npm issue... - * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] - * Fixed `req.flash()`, only escape args - * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] - -2.4.6 / 2011-08-22 -================== - - * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] - -2.4.5 / 2011-08-19 -================== - - * Added support for routes to handle errors. Closes #809 - * Added `app.routes.all()`. Closes #803 - * Added "basepath" setting to work in conjunction with reverse proxies etc. - * Refactored `Route` to use a single array of callbacks - * Added support for multiple callbacks for `app.param()`. Closes #801 -Closes #805 - * Changed: removed .call(self) for route callbacks - * Dependency: `qs >= 0.3.1` - * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 - -2.4.4 / 2011-08-05 -================== - - * Fixed `res.header()` intention of a set, even when `undefined` - * Fixed `*`, value no longer required - * Fixed `res.send(204)` support. Closes #771 - -2.4.3 / 2011-07-14 -================== - - * Added docs for `status` option special-case. Closes #739 - * Fixed `options.filename`, exposing the view path to template engines - -2.4.2. / 2011-07-06 -================== - - * Revert "removed jsonp stripping" for XSS - -2.4.1 / 2011-07-06 -================== - - * Added `res.json()` JSONP support. Closes #737 - * Added _extending-templates_ example. Closes #730 - * Added "strict routing" setting for trailing slashes - * Added support for multiple envs in `app.configure()` calls. Closes #735 - * Changed: `res.send()` using `res.json()` - * Changed: when cookie `path === null` don't default it - * Changed; default cookie path to "home" setting. Closes #731 - * Removed _pids/logs_ creation from express(1) - -2.4.0 / 2011-06-28 -================== - - * Added chainable `res.status(code)` - * Added `res.json()`, an explicit version of `res.send(obj)` - * Added simple web-service example - -2.3.12 / 2011-06-22 -================== - - * \#express is now on freenode! come join! - * Added `req.get(field, param)` - * Added links to Japanese documentation, thanks @hideyukisaito! - * Added; the `express(1)` generated app outputs the env - * Added `content-negotiation` example - * Dependency: connect >= 1.5.1 < 2.0.0 - * Fixed view layout bug. Closes #720 - * Fixed; ignore body on 304. Closes #701 - -2.3.11 / 2011-06-04 -================== - - * Added `npm test` - * Removed generation of dummy test file from `express(1)` - * Fixed; `express(1)` adds express as a dep - * Fixed; prune on `prepublish` - -2.3.10 / 2011-05-27 -================== - - * Added `req.route`, exposing the current route - * Added _package.json_ generation support to `express(1)` - * Fixed call to `app.param()` function for optional params. Closes #682 - -2.3.9 / 2011-05-25 -================== - - * Fixed bug-ish with `../' in `res.partial()` calls - -2.3.8 / 2011-05-24 -================== - - * Fixed `app.options()` - -2.3.7 / 2011-05-23 -================== - - * Added route `Collection`, ex: `app.get('/user/:id').remove();` - * Added support for `app.param(fn)` to define param logic - * Removed `app.param()` support for callback with return value - * Removed module.parent check from express(1) generated app. Closes #670 - * Refactored router. Closes #639 - -2.3.6 / 2011-05-20 -================== - - * Changed; using devDependencies instead of git submodules - * Fixed redis session example - * Fixed markdown example - * Fixed view caching, should not be enabled in development - -2.3.5 / 2011-05-20 -================== - - * Added export `.view` as alias for `.View` - -2.3.4 / 2011-05-08 -================== - - * Added `./examples/say` - * Fixed `res.sendfile()` bug preventing the transfer of files with spaces - -2.3.3 / 2011-05-03 -================== - - * Added "case sensitive routes" option. - * Changed; split methods supported per rfc [slaskis] - * Fixed route-specific middleware when using the same callback function several times - -2.3.2 / 2011-04-27 -================== - - * Fixed view hints - -2.3.1 / 2011-04-26 -================== - - * Added `app.match()` as `app.match.all()` - * Added `app.lookup()` as `app.lookup.all()` - * Added `app.remove()` for `app.remove.all()` - * Added `app.remove.VERB()` - * Fixed template caching collision issue. Closes #644 - * Moved router over from connect and started refactor - -2.3.0 / 2011-04-25 -================== - - * Added options support to `res.clearCookie()` - * Added `res.helpers()` as alias of `res.locals()` - * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` - * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] - * Renamed "cache views" to "view cache". Closes #628 - * Fixed caching of views when using several apps. Closes #637 - * Fixed gotcha invoking `app.param()` callbacks once per route middleware. -Closes #638 - * Fixed partial lookup precedence. Closes #631 -Shaw] - -2.2.2 / 2011-04-12 -================== - - * Added second callback support for `res.download()` connection errors - * Fixed `filename` option passing to template engine - -2.2.1 / 2011-04-04 -================== - - * Added `layout(path)` helper to change the layout within a view. Closes #610 - * Fixed `partial()` collection object support. - Previously only anything with `.length` would work. - When `.length` is present one must still be aware of holes, - however now `{ collection: {foo: 'bar'}}` is valid, exposes - `keyInCollection` and `keysInCollection`. - - * Performance improved with better view caching - * Removed `request` and `response` locals - * Changed; errorHandler page title is now `Express` instead of `Connect` - -2.2.0 / 2011-03-30 -================== - - * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 - * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 - * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. - * Dependency `connect >= 1.2.0` - -2.1.1 / 2011-03-29 -================== - - * Added; expose `err.view` object when failing to locate a view - * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] - * Fixed; `res.send(undefined)` responds with 204 [aheckmann] - -2.1.0 / 2011-03-24 -================== - - * Added `/_?` partial lookup support. Closes #447 - * Added `request`, `response`, and `app` local variables - * Added `settings` local variable, containing the app's settings - * Added `req.flash()` exception if `req.session` is not available - * Added `res.send(bool)` support (json response) - * Fixed stylus example for latest version - * Fixed; wrap try/catch around `res.render()` - -2.0.0 / 2011-03-17 -================== - - * Fixed up index view path alternative. - * Changed; `res.locals()` without object returns the locals - -2.0.0rc3 / 2011-03-17 -================== - - * Added `res.locals(obj)` to compliment `res.local(key, val)` - * Added `res.partial()` callback support - * Fixed recursive error reporting issue in `res.render()` - -2.0.0rc2 / 2011-03-17 -================== - - * Changed; `partial()` "locals" are now optional - * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] - * Fixed .filename view engine option [reported by drudge] - * Fixed blog example - * Fixed `{req,res}.app` reference when mounting [Ben Weaver] - -2.0.0rc / 2011-03-14 -================== - - * Fixed; expose `HTTPSServer` constructor - * Fixed express(1) default test charset. Closes #579 [reported by secoif] - * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] - -2.0.0beta3 / 2011-03-09 -================== - - * Added support for `res.contentType()` literal - The original `res.contentType('.json')`, - `res.contentType('application/json')`, and `res.contentType('json')` - will work now. - * Added `res.render()` status option support back - * Added charset option for `res.render()` - * Added `.charset` support (via connect 1.0.4) - * Added view resolution hints when in development and a lookup fails - * Added layout lookup support relative to the page view. - For example while rendering `./views/user/index.jade` if you create - `./views/user/layout.jade` it will be used in favour of the root layout. - * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] - * Fixed; default `res.send()` string charset to utf8 - * Removed `Partial` constructor (not currently used) - -2.0.0beta2 / 2011-03-07 -================== - - * Added res.render() `.locals` support back to aid in migration process - * Fixed flash example - -2.0.0beta / 2011-03-03 -================== - - * Added HTTPS support - * Added `res.cookie()` maxAge support - * Added `req.header()` _Referrer_ / _Referer_ special-case, either works - * Added mount support for `res.redirect()`, now respects the mount-point - * Added `union()` util, taking place of `merge(clone())` combo - * Added stylus support to express(1) generated app - * Added secret to session middleware used in examples and generated app - * Added `res.local(name, val)` for progressive view locals - * Added default param support to `req.param(name, default)` - * Added `app.disabled()` and `app.enabled()` - * Added `app.register()` support for omitting leading ".", either works - * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 - * Added `app.param()` to map route params to async/sync logic - * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 - * Added extname with no leading "." support to `res.contentType()` - * Added `cache views` setting, defaulting to enabled in "production" env - * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. - * Added `req.accepts()` support for extensions - * Changed; `res.download()` and `res.sendfile()` now utilize Connect's - static file server `connect.static.send()`. - * Changed; replaced `connect.utils.mime()` with npm _mime_ module - * Changed; allow `req.query` to be pre-defined (via middleware or other parent - * Changed view partial resolution, now relative to parent view - * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. - * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 - * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` - * Fixed; using _qs_ module instead of _querystring_ - * Fixed; strip unsafe chars from jsonp callbacks - * Removed "stream threshold" setting - -1.0.8 / 2011-03-01 -================== - - * Allow `req.query` to be pre-defined (via middleware or other parent app) - * "connect": ">= 0.5.0 < 1.0.0". Closes #547 - * Removed the long deprecated __EXPRESS_ENV__ support - -1.0.7 / 2011-02-07 -================== - - * Fixed `render()` setting inheritance. - Mounted apps would not inherit "view engine" - -1.0.6 / 2011-02-07 -================== - - * Fixed `view engine` setting bug when period is in dirname - -1.0.5 / 2011-02-05 -================== - - * Added secret to generated app `session()` call - -1.0.4 / 2011-02-05 -================== - - * Added `qs` dependency to _package.json_ - * Fixed namespaced `require()`s for latest connect support - -1.0.3 / 2011-01-13 -================== - - * Remove unsafe characters from JSONP callback names [Ryan Grove] - -1.0.2 / 2011-01-10 -================== - - * Removed nested require, using `connect.router` - -1.0.1 / 2010-12-29 -================== - - * Fixed for middleware stacked via `createServer()` - previously the `foo` middleware passed to `createServer(foo)` - would not have access to Express methods such as `res.send()` - or props like `req.query` etc. - -1.0.0 / 2010-11-16 -================== - - * Added; deduce partial object names from the last segment. - For example by default `partial('forum/post', postObject)` will - give you the _post_ object, providing a meaningful default. - * Added http status code string representation to `res.redirect()` body - * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. - * Added `req.is()` to aid in content negotiation - * Added partial local inheritance [suggested by masylum]. Closes #102 - providing access to parent template locals. - * Added _-s, --session[s]_ flag to express(1) to add session related middleware - * Added _--template_ flag to express(1) to specify the - template engine to use. - * Added _--css_ flag to express(1) to specify the - stylesheet engine to use (or just plain css by default). - * Added `app.all()` support [thanks aheckmann] - * Added partial direct object support. - You may now `partial('user', user)` providing the "user" local, - vs previously `partial('user', { object: user })`. - * Added _route-separation_ example since many people question ways - to do this with CommonJS modules. Also view the _blog_ example for - an alternative. - * Performance; caching view path derived partial object names - * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 - * Fixed jsonp support; _text/javascript_ as per mailinglist discussion - -1.0.0rc4 / 2010-10-14 -================== - - * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 - * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) - * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] - * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] - * Added `partial()` support for array-like collections. Closes #434 - * Added support for swappable querystring parsers - * Added session usage docs. Closes #443 - * Added dynamic helper caching. Closes #439 [suggested by maritz] - * Added authentication example - * Added basic Range support to `res.sendfile()` (and `res.download()` etc) - * Changed; `express(1)` generated app using 2 spaces instead of 4 - * Default env to "development" again [aheckmann] - * Removed _context_ option is no more, use "scope" - * Fixed; exposing _./support_ libs to examples so they can run without installs - * Fixed mvc example - -1.0.0rc3 / 2010-09-20 -================== - - * Added confirmation for `express(1)` app generation. Closes #391 - * Added extending of flash formatters via `app.flashFormatters` - * Added flash formatter support. Closes #411 - * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" - * Added _stream threshold_ setting for `res.sendfile()` - * Added `res.send()` __HEAD__ support - * Added `res.clearCookie()` - * Added `res.cookie()` - * Added `res.render()` headers option - * Added `res.redirect()` response bodies - * Added `res.render()` status option support. Closes #425 [thanks aheckmann] - * Fixed `res.sendfile()` responding with 403 on malicious path - * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ - * Fixed; mounted apps settings now inherit from parent app [aheckmann] - * Fixed; stripping Content-Length / Content-Type when 204 - * Fixed `res.send()` 204. Closes #419 - * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 - * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] - - -1.0.0rc2 / 2010-08-17 -================== - - * Added `app.register()` for template engine mapping. Closes #390 - * Added `res.render()` callback support as second argument (no options) - * Added callback support to `res.download()` - * Added callback support for `res.sendfile()` - * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` - * Added "partials" setting to docs - * Added default expresso tests to `express(1)` generated app. Closes #384 - * Fixed `res.sendfile()` error handling, defer via `next()` - * Fixed `res.render()` callback when a layout is used [thanks guillermo] - * Fixed; `make install` creating ~/.node_libraries when not present - * Fixed issue preventing error handlers from being defined anywhere. Closes #387 - -1.0.0rc / 2010-07-28 -================== - - * Added mounted hook. Closes #369 - * Added connect dependency to _package.json_ - - * Removed "reload views" setting and support code - development env never caches, production always caches. - - * Removed _param_ in route callbacks, signature is now - simply (req, res, next), previously (req, res, params, next). - Use _req.params_ for path captures, _req.query_ for GET params. - - * Fixed "home" setting - * Fixed middleware/router precedence issue. Closes #366 - * Fixed; _configure()_ callbacks called immediately. Closes #368 - -1.0.0beta2 / 2010-07-23 -================== - - * Added more examples - * Added; exporting `Server` constructor - * Added `Server#helpers()` for view locals - * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 - * Added support for absolute view paths - * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 - * Added Guillermo Rauch to the contributor list - * Added support for "as" for non-collection partials. Closes #341 - * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] - * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] - * Fixed instanceof `Array` checks, now `Array.isArray()` - * Fixed express(1) expansion of public dirs. Closes #348 - * Fixed middleware precedence. Closes #345 - * Fixed view watcher, now async [thanks aheckmann] - -1.0.0beta / 2010-07-15 -================== - - * Re-write - - much faster - - much lighter - - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs - -0.14.0 / 2010-06-15 -================== - - * Utilize relative requires - * Added Static bufferSize option [aheckmann] - * Fixed caching of view and partial subdirectories [aheckmann] - * Fixed mime.type() comments now that ".ext" is not supported - * Updated haml submodule - * Updated class submodule - * Removed bin/express - -0.13.0 / 2010-06-01 -================== - - * Added node v0.1.97 compatibility - * Added support for deleting cookies via Request#cookie('key', null) - * Updated haml submodule - * Fixed not-found page, now using charset utf-8 - * Fixed show-exceptions page, now using charset utf-8 - * Fixed view support due to fs.readFile Buffers - * Changed; mime.type() no longer accepts ".type" due to node extname() changes - -0.12.0 / 2010-05-22 -================== - - * Added node v0.1.96 compatibility - * Added view `helpers` export which act as additional local variables - * Updated haml submodule - * Changed ETag; removed inode, modified time only - * Fixed LF to CRLF for setting multiple cookies - * Fixed cookie compilation; values are now urlencoded - * Fixed cookies parsing; accepts quoted values and url escaped cookies - -0.11.0 / 2010-05-06 -================== - - * Added support for layouts using different engines - - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) - - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' - - this.render('page.html.haml', { layout: false }) // no layout - * Updated ext submodule - * Updated haml submodule - * Fixed EJS partial support by passing along the context. Issue #307 - -0.10.1 / 2010-05-03 -================== - - * Fixed binary uploads. - -0.10.0 / 2010-04-30 -================== - - * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s - encoding is set to 'utf8' or 'utf-8'). - * Added "encoding" option to Request#render(). Closes #299 - * Added "dump exceptions" setting, which is enabled by default. - * Added simple ejs template engine support - * Added error response support for text/plain, application/json. Closes #297 - * Added callback function param to Request#error() - * Added Request#sendHead() - * Added Request#stream() - * Added support for Request#respond(304, null) for empty response bodies - * Added ETag support to Request#sendfile() - * Added options to Request#sendfile(), passed to fs.createReadStream() - * Added filename arg to Request#download() - * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request - * Performance enhanced by preventing several calls to toLowerCase() in Router#match() - * Changed; Request#sendfile() now streams - * Changed; Renamed Request#halt() to Request#respond(). Closes #289 - * Changed; Using sys.inspect() instead of JSON.encode() for error output - * Changed; run() returns the http.Server instance. Closes #298 - * Changed; Defaulting Server#host to null (INADDR_ANY) - * Changed; Logger "common" format scale of 0.4f - * Removed Logger "request" format - * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found - * Fixed several issues with http client - * Fixed Logger Content-Length output - * Fixed bug preventing Opera from retaining the generated session id. Closes #292 - -0.9.0 / 2010-04-14 -================== - - * Added DSL level error() route support - * Added DSL level notFound() route support - * Added Request#error() - * Added Request#notFound() - * Added Request#render() callback function. Closes #258 - * Added "max upload size" setting - * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 - * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js - * Added callback function support to Request#halt() as 3rd/4th arg - * Added preprocessing of route param wildcards using param(). Closes #251 - * Added view partial support (with collections etc.) - * Fixed bug preventing falsey params (such as ?page=0). Closes #286 - * Fixed setting of multiple cookies. Closes #199 - * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) - * Changed; session cookie is now httpOnly - * Changed; Request is no longer global - * Changed; Event is no longer global - * Changed; "sys" module is no longer global - * Changed; moved Request#download to Static plugin where it belongs - * Changed; Request instance created before body parsing. Closes #262 - * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 - * Changed; Pre-caching view partials in memory when "cache view partials" is enabled - * Updated support to node --version 0.1.90 - * Updated dependencies - * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) - * Removed utils.mixin(); use Object#mergeDeep() - -0.8.0 / 2010-03-19 -================== - - * Added coffeescript example app. Closes #242 - * Changed; cache api now async friendly. Closes #240 - * Removed deprecated 'express/static' support. Use 'express/plugins/static' - -0.7.6 / 2010-03-19 -================== - - * Added Request#isXHR. Closes #229 - * Added `make install` (for the executable) - * Added `express` executable for setting up simple app templates - * Added "GET /public/*" to Static plugin, defaulting to /public - * Added Static plugin - * Fixed; Request#render() only calls cache.get() once - * Fixed; Namespacing View caches with "view:" - * Fixed; Namespacing Static caches with "static:" - * Fixed; Both example apps now use the Static plugin - * Fixed set("views"). Closes #239 - * Fixed missing space for combined log format - * Deprecated Request#sendfile() and 'express/static' - * Removed Server#running - -0.7.5 / 2010-03-16 -================== - - * Added Request#flash() support without args, now returns all flashes - * Updated ext submodule - -0.7.4 / 2010-03-16 -================== - - * Fixed session reaper - * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) - -0.7.3 / 2010-03-16 -================== - - * Added package.json - * Fixed requiring of haml / sass due to kiwi removal - -0.7.2 / 2010-03-16 -================== - - * Fixed GIT submodules (HAH!) - -0.7.1 / 2010-03-16 -================== - - * Changed; Express now using submodules again until a PM is adopted - * Changed; chat example using millisecond conversions from ext - -0.7.0 / 2010-03-15 -================== - - * Added Request#pass() support (finds the next matching route, or the given path) - * Added Logger plugin (default "common" format replaces CommonLogger) - * Removed Profiler plugin - * Removed CommonLogger plugin - -0.6.0 / 2010-03-11 -================== - - * Added seed.yml for kiwi package management support - * Added HTTP client query string support when method is GET. Closes #205 - - * Added support for arbitrary view engines. - For example "foo.engine.html" will now require('engine'), - the exports from this module are cached after the first require(). - - * Added async plugin support - - * Removed usage of RESTful route funcs as http client - get() etc, use http.get() and friends - - * Removed custom exceptions - -0.5.0 / 2010-03-10 -================== - - * Added ext dependency (library of js extensions) - * Removed extname() / basename() utils. Use path module - * Removed toArray() util. Use arguments.values - * Removed escapeRegexp() util. Use RegExp.escape() - * Removed process.mixin() dependency. Use utils.mixin() - * Removed Collection - * Removed ElementCollection - * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) - -0.4.0 / 2010-02-11 -================== - - * Added flash() example to sample upload app - * Added high level restful http client module (express/http) - * Changed; RESTful route functions double as HTTP clients. Closes #69 - * Changed; throwing error when routes are added at runtime - * Changed; defaulting render() context to the current Request. Closes #197 - * Updated haml submodule - -0.3.0 / 2010-02-11 -================== - - * Updated haml / sass submodules. Closes #200 - * Added flash message support. Closes #64 - * Added accepts() now allows multiple args. fixes #117 - * Added support for plugins to halt. Closes #189 - * Added alternate layout support. Closes #119 - * Removed Route#run(). Closes #188 - * Fixed broken specs due to use(Cookie) missing - -0.2.1 / 2010-02-05 -================== - - * Added "plot" format option for Profiler (for gnuplot processing) - * Added request number to Profiler plugin - * Fixed binary encoding for multipart file uploads, was previously defaulting to UTF8 - * Fixed issue with routes not firing when not files are present. Closes #184 - * Fixed process.Promise -> events.Promise - -0.2.0 / 2010-02-03 -================== - - * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 - * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 - * Added expiration support to cache api with reaper. Closes #133 - * Added cache Store.Memory#reap() - * Added Cache; cache api now uses first class Cache instances - * Added abstract session Store. Closes #172 - * Changed; cache Memory.Store#get() utilizing Collection - * Renamed MemoryStore -> Store.Memory - * Fixed use() of the same plugin several time will always use latest options. Closes #176 - -0.1.0 / 2010-02-03 -================== - - * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context - * Updated node support to 0.1.27 Closes #169 - * Updated dirname(__filename) -> __dirname - * Updated libxmljs support to v0.2.0 - * Added session support with memory store / reaping - * Added quick uid() helper - * Added multi-part upload support - * Added Sass.js support / submodule - * Added production env caching view contents and static files - * Added static file caching. Closes #136 - * Added cache plugin with memory stores - * Added support to StaticFile so that it works with non-textual files. - * Removed dirname() helper - * Removed several globals (now their modules must be required) - -0.0.2 / 2010-01-10 -================== - - * Added view benchmarks; currently haml vs ejs - * Added Request#attachment() specs. Closes #116 - * Added use of node's parseQuery() util. Closes #123 - * Added `make init` for submodules - * Updated Haml - * Updated sample chat app to show messages on load - * Updated libxmljs parseString -> parseHtmlString - * Fixed `make init` to work with older versions of git - * Fixed specs can now run independent specs for those who can't build deps. Closes #127 - * Fixed issues introduced by the node url module changes. Closes 126. - * Fixed two assertions failing due to Collection#keys() returning strings - * Fixed faulty Collection#toArray() spec due to keys() returning strings - * Fixed `make test` now builds libxmljs.node before testing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/LICENSE deleted file mode 100644 index aa927e4..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2009-2014 TJ Holowaychuk -Copyright (c) 2013-2014 Roman Shtylman -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/Readme.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/Readme.md deleted file mode 100644 index 7443b81..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/Readme.md +++ /dev/null @@ -1,266 +0,0 @@ -[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](https://expressjs.com/) - -**Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).** - -**This project has a [Code of Conduct][].** - -## Table of contents - -* [Installation](#Installation) -* [Features](#Features) -* [Docs & Community](#docs--community) -* [Quick Start](#Quick-Start) -* [Running Tests](#Running-Tests) -* [Philosophy](#Philosophy) -* [Examples](#Examples) -* [Contributing to Express](#Contributing) -* [TC (Technical Committee)](#tc-technical-committee) -* [Triagers](#triagers) -* [License](#license) - - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-downloads-url] -[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] - - -```js -import express from 'express' - -const app = express() - -app.get('/', (req, res) => { - res.send('Hello World') -}) - -app.listen(3000) -``` - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). - -Before installing, [download and install Node.js](https://nodejs.org/en/download/). -Node.js 18 or higher is required. - -If this is a brand new project, make sure to create a `package.json` first with -the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file). - -Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -npm install express -``` - -Follow [our installing guide](https://expressjs.com/en/starter/installing.html) -for more information. - -## Features - - * Robust routing - * Focus on high performance - * Super-high test coverage - * HTTP helpers (redirection, caching, etc) - * View system supporting 14+ template engines - * Content negotiation - * Executable for generating applications quickly - -## Docs & Community - - * [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] - * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules - * [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express - -**PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5) - -## Quick Start - - The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below: - - Install the executable. The executable's major version will match Express's: - -```bash -npm install -g express-generator@4 -``` - - Create the app: - -```bash -express /tmp/foo && cd /tmp/foo -``` - - Install dependencies: - -```bash -npm install -``` - - Start the server: - -```bash -npm start -``` - - View the website at: http://localhost:3000 - -## Philosophy - - The Express philosophy is to provide small, robust tooling for HTTP servers, making - it a great solution for single page applications, websites, hybrids, or public - HTTP APIs. - - Express does not force you to use any specific ORM or template engine. With support for over - 14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate), - you can quickly craft your perfect framework. - -## Examples - - To view the examples, clone the Express repository: - -```bash -git clone https://github.com/expressjs/express.git --depth 1 && cd express -``` - - Then install the dependencies: - -```bash -npm install -``` - - Then run whichever example you want: - -```bash -node examples/content-negotiation -``` - -## Contributing - - [![Linux Build][github-actions-ci-image]][github-actions-ci-url] - [![Test Coverage][coveralls-image]][coveralls-url] - -The Express.js project welcomes all constructive contributions. Contributions take many forms, -from code for bug fixes and enhancements, to additions and fixes to documentation, additional -tests, triaging incoming pull requests and issues, and more! - -See the [Contributing Guide](Contributing.md) for more technical details on contributing. - -### Security Issues - -If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md). - -### Running Tests - -To run the test suite, first install the dependencies: - -```bash -npm install -``` - -Then run `npm test`: - -```bash -npm test -``` - -## People - -The original author of Express is [TJ Holowaychuk](https://github.com/tj) - -[List of all contributors](https://github.com/expressjs/express/graphs/contributors) - -### TC (Technical Committee) - -* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises GascĂłn** (he/him) -* [jonchurch](https://github.com/jonchurch) - **Jon Church** -* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** -* [LinusU](https://github.com/LinusU) - **Linus UnnebĂ€ck** -* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** -* [sheplu](https://github.com/sheplu) - **Jean Burellier** -* [crandmck](https://github.com/crandmck) - **Rand McKinney** -* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** - -
-TC emeriti members - -#### TC emeriti members - - * [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** - * [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** - * [jonathanong](https://github.com/jonathanong) - **jongleberry** - * [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** - * [troygoode](https://github.com/troygoode) - **Troy Goode** -
- - -### Triagers - -* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** -* [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** -* [carpasse](https://github.com/carpasse) - **Carlos Serrano** -* [CBID2](https://github.com/CBID2) - **Christine Belzie** -* [dpopp07](https://github.com/dpopp07) - **Dustin Popp** -* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises GascĂłn** (he/him) -* [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** -* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) -* [Phillip9587](https://github.com/Phillip9587) - **Phillip Barta** -* [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** -* [rxmarbles](https://github.com/rxmarbles) **Rick Markins** (He/him) - -
-Triagers emeriti members - -#### Emeritus Triagers - - * [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** - * [G-Rath](https://github.com/G-Rath) - **Gareth Jones** - * [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** - * [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** - * [NotMoni](https://github.com/NotMoni) - **Moni** - * [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** - * [davidmashe](https://github.com/davidmashe) - **David Ashe** - * [digitaIfabric](https://github.com/digitaIfabric) - **David** - * [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** - * [fed135](https://github.com/fed135) - **Frederic Charette** - * [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** - * [getspooky](https://github.com/getspooky) - **Yasser Ameur** - * [ghinks](https://github.com/ghinks) - **Glenn** - * [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** - * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** - * [jake32321](https://github.com/jake32321) - **Jake Reed** - * [jonchurch](https://github.com/jonchurch) - **Jon Church** - * [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** - * [marsonya](https://github.com/marsonya) - **Lekan Ikotun** - * [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** - * [maxakuru](https://github.com/maxakuru) - **Max Edell** - * [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** - * [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** - * [sheplu](https://github.com/sheplu) - **Jean Burellier** - * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** - * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** - * [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** - * [0ss](https://github.com/0ss) - **Salah** - * [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) - * [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) - * [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** - * [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** - -
- - -## License - - [MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/express/master -[coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=CI -[github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml -[npm-downloads-image]: https://badgen.net/npm/dm/express -[npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true -[npm-url]: https://npmjs.org/package/express -[npm-version-image]: https://badgen.net/npm/v/express -[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge -[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express -[Code of Conduct]: https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/index.js deleted file mode 100644 index d219b0c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -module.exports = require('./lib/express'); diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/application.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/application.js deleted file mode 100644 index cf6d78c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/application.js +++ /dev/null @@ -1,631 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var finalhandler = require('finalhandler'); -var debug = require('debug')('express:application'); -var View = require('./view'); -var http = require('node:http'); -var methods = require('./utils').methods; -var compileETag = require('./utils').compileETag; -var compileQueryParser = require('./utils').compileQueryParser; -var compileTrust = require('./utils').compileTrust; -var resolve = require('node:path').resolve; -var once = require('once') -var Router = require('router'); - -/** - * Module variables. - * @private - */ - -var slice = Array.prototype.slice; -var flatten = Array.prototype.flat; - -/** - * Application prototype. - */ - -var app = exports = module.exports = {}; - -/** - * Variable for trust proxy inheritance back-compat - * @private - */ - -var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default'; - -/** - * Initialize the server. - * - * - setup default configuration - * - setup default middleware - * - setup route reflection methods - * - * @private - */ - -app.init = function init() { - var router = null; - - this.cache = Object.create(null); - this.engines = Object.create(null); - this.settings = Object.create(null); - - this.defaultConfiguration(); - - // Setup getting to lazily add base router - Object.defineProperty(this, 'router', { - configurable: true, - enumerable: true, - get: function getrouter() { - if (router === null) { - router = new Router({ - caseSensitive: this.enabled('case sensitive routing'), - strict: this.enabled('strict routing') - }); - } - - return router; - } - }); -}; - -/** - * Initialize application configuration. - * @private - */ - -app.defaultConfiguration = function defaultConfiguration() { - var env = process.env.NODE_ENV || 'development'; - - // default settings - this.enable('x-powered-by'); - this.set('etag', 'weak'); - this.set('env', env); - this.set('query parser', 'simple') - this.set('subdomain offset', 2); - this.set('trust proxy', false); - - // trust proxy inherit back-compat - Object.defineProperty(this.settings, trustProxyDefaultSymbol, { - configurable: true, - value: true - }); - - debug('booting in %s mode', env); - - this.on('mount', function onmount(parent) { - // inherit trust proxy - if (this.settings[trustProxyDefaultSymbol] === true - && typeof parent.settings['trust proxy fn'] === 'function') { - delete this.settings['trust proxy']; - delete this.settings['trust proxy fn']; - } - - // inherit protos - Object.setPrototypeOf(this.request, parent.request) - Object.setPrototypeOf(this.response, parent.response) - Object.setPrototypeOf(this.engines, parent.engines) - Object.setPrototypeOf(this.settings, parent.settings) - }); - - // setup locals - this.locals = Object.create(null); - - // top-most app is mounted at / - this.mountpath = '/'; - - // default locals - this.locals.settings = this.settings; - - // default configuration - this.set('view', View); - this.set('views', resolve('views')); - this.set('jsonp callback name', 'callback'); - - if (env === 'production') { - this.enable('view cache'); - } -}; - -/** - * Dispatch a req, res pair into the application. Starts pipeline processing. - * - * If no callback is provided, then default error handlers will respond - * in the event of an error bubbling through the stack. - * - * @private - */ - -app.handle = function handle(req, res, callback) { - // final handler - var done = callback || finalhandler(req, res, { - env: this.get('env'), - onerror: logerror.bind(this) - }); - - // set powered by header - if (this.enabled('x-powered-by')) { - res.setHeader('X-Powered-By', 'Express'); - } - - // set circular references - req.res = res; - res.req = req; - - // alter the prototypes - Object.setPrototypeOf(req, this.request) - Object.setPrototypeOf(res, this.response) - - // setup locals - if (!res.locals) { - res.locals = Object.create(null); - } - - this.router.handle(req, res, done); -}; - -/** - * Proxy `Router#use()` to add middleware to the app router. - * See Router#use() documentation for details. - * - * If the _fn_ parameter is an express app, then it will be - * mounted at the _route_ specified. - * - * @public - */ - -app.use = function use(fn) { - var offset = 0; - var path = '/'; - - // default path to '/' - // disambiguate app.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; - - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; - } - - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; - } - } - - var fns = flatten.call(slice.call(arguments, offset), Infinity); - - if (fns.length === 0) { - throw new TypeError('app.use() requires a middleware function') - } - - // get router - var router = this.router; - - fns.forEach(function (fn) { - // non-express app - if (!fn || !fn.handle || !fn.set) { - return router.use(path, fn); - } - - debug('.use app under %s', path); - fn.mountpath = path; - fn.parent = this; - - // restore .app property on req and res - router.use(path, function mounted_app(req, res, next) { - var orig = req.app; - fn.handle(req, res, function (err) { - Object.setPrototypeOf(req, orig.request) - Object.setPrototypeOf(res, orig.response) - next(err); - }); - }); - - // mounted an app - fn.emit('mount', this); - }, this); - - return this; -}; - -/** - * Proxy to the app `Router#route()` - * Returns a new `Route` instance for the _path_. - * - * Routes are isolated middleware stacks for specific paths. - * See the Route api docs for details. - * - * @public - */ - -app.route = function route(path) { - return this.router.route(path); -}; - -/** - * Register the given template engine callback `fn` - * as `ext`. - * - * By default will `require()` the engine based on the - * file extension. For example if you try to render - * a "foo.ejs" file Express will invoke the following internally: - * - * app.engine('ejs', require('ejs').__express); - * - * For engines that do not provide `.__express` out of the box, - * or if you wish to "map" a different extension to the template engine - * you may use this method. For example mapping the EJS template engine to - * ".html" files: - * - * app.engine('html', require('ejs').renderFile); - * - * In this case EJS provides a `.renderFile()` method with - * the same signature that Express expects: `(path, options, callback)`, - * though note that it aliases this method as `ejs.__express` internally - * so if you're using ".ejs" extensions you don't need to do anything. - * - * Some template engines do not follow this convention, the - * [Consolidate.js](https://github.com/tj/consolidate.js) - * library was created to map all of node's popular template - * engines to follow this convention, thus allowing them to - * work seamlessly within Express. - * - * @param {String} ext - * @param {Function} fn - * @return {app} for chaining - * @public - */ - -app.engine = function engine(ext, fn) { - if (typeof fn !== 'function') { - throw new Error('callback function required'); - } - - // get file extension - var extension = ext[0] !== '.' - ? '.' + ext - : ext; - - // store engine - this.engines[extension] = fn; - - return this; -}; - -/** - * Proxy to `Router#param()` with one added api feature. The _name_ parameter - * can be an array of names. - * - * See the Router#param() docs for more details. - * - * @param {String|Array} name - * @param {Function} fn - * @return {app} for chaining - * @public - */ - -app.param = function param(name, fn) { - if (Array.isArray(name)) { - for (var i = 0; i < name.length; i++) { - this.param(name[i], fn); - } - - return this; - } - - this.router.param(name, fn); - - return this; -}; - -/** - * Assign `setting` to `val`, or return `setting`'s value. - * - * app.set('foo', 'bar'); - * app.set('foo'); - * // => "bar" - * - * Mounted servers inherit their parent server's settings. - * - * @param {String} setting - * @param {*} [val] - * @return {Server} for chaining - * @public - */ - -app.set = function set(setting, val) { - if (arguments.length === 1) { - // app.get(setting) - return this.settings[setting]; - } - - debug('set "%s" to %o', setting, val); - - // set value - this.settings[setting] = val; - - // trigger matched settings - switch (setting) { - case 'etag': - this.set('etag fn', compileETag(val)); - break; - case 'query parser': - this.set('query parser fn', compileQueryParser(val)); - break; - case 'trust proxy': - this.set('trust proxy fn', compileTrust(val)); - - // trust proxy inherit back-compat - Object.defineProperty(this.settings, trustProxyDefaultSymbol, { - configurable: true, - value: false - }); - - break; - } - - return this; -}; - -/** - * Return the app's absolute pathname - * based on the parent(s) that have - * mounted it. - * - * For example if the application was - * mounted as "/admin", which itself - * was mounted as "/blog" then the - * return value would be "/blog/admin". - * - * @return {String} - * @private - */ - -app.path = function path() { - return this.parent - ? this.parent.path() + this.mountpath - : ''; -}; - -/** - * Check if `setting` is enabled (truthy). - * - * app.enabled('foo') - * // => false - * - * app.enable('foo') - * app.enabled('foo') - * // => true - * - * @param {String} setting - * @return {Boolean} - * @public - */ - -app.enabled = function enabled(setting) { - return Boolean(this.set(setting)); -}; - -/** - * Check if `setting` is disabled. - * - * app.disabled('foo') - * // => true - * - * app.enable('foo') - * app.disabled('foo') - * // => false - * - * @param {String} setting - * @return {Boolean} - * @public - */ - -app.disabled = function disabled(setting) { - return !this.set(setting); -}; - -/** - * Enable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @public - */ - -app.enable = function enable(setting) { - return this.set(setting, true); -}; - -/** - * Disable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @public - */ - -app.disable = function disable(setting) { - return this.set(setting, false); -}; - -/** - * Delegate `.VERB(...)` calls to `router.VERB(...)`. - */ - -methods.forEach(function (method) { - app[method] = function (path) { - if (method === 'get' && arguments.length === 1) { - // app.get(setting) - return this.set(path); - } - - var route = this.route(path); - route[method].apply(route, slice.call(arguments, 1)); - return this; - }; -}); - -/** - * Special-cased "all" method, applying the given route `path`, - * middleware, and callback to _every_ HTTP method. - * - * @param {String} path - * @param {Function} ... - * @return {app} for chaining - * @public - */ - -app.all = function all(path) { - var route = this.route(path); - var args = slice.call(arguments, 1); - - for (var i = 0; i < methods.length; i++) { - route[methods[i]].apply(route, args); - } - - return this; -}; - -/** - * Render the given view `name` name with `options` - * and a callback accepting an error and the - * rendered template string. - * - * Example: - * - * app.render('email', { name: 'Tobi' }, function(err, html){ - * // ... - * }) - * - * @param {String} name - * @param {Object|Function} options or fn - * @param {Function} callback - * @public - */ - -app.render = function render(name, options, callback) { - var cache = this.cache; - var done = callback; - var engines = this.engines; - var opts = options; - var view; - - // support callback function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; - } - - // merge options - var renderOptions = { ...this.locals, ...opts._locals, ...opts }; - - // set .cache unless explicitly provided - if (renderOptions.cache == null) { - renderOptions.cache = this.enabled('view cache'); - } - - // primed cache - if (renderOptions.cache) { - view = cache[name]; - } - - // view - if (!view) { - var View = this.get('view'); - - view = new View(name, { - defaultEngine: this.get('view engine'), - root: this.get('views'), - engines: engines - }); - - if (!view.path) { - var dirs = Array.isArray(view.root) && view.root.length > 1 - ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' - : 'directory "' + view.root + '"' - var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); - err.view = view; - return done(err); - } - - // prime the cache - if (renderOptions.cache) { - cache[name] = view; - } - } - - // render - tryRender(view, renderOptions, done); -}; - -/** - * Listen for connections. - * - * A node `http.Server` is returned, with this - * application (which is a `Function`) as its - * callback. If you wish to create both an HTTP - * and HTTPS server you may do so with the "http" - * and "https" modules as shown here: - * - * var http = require('node:http') - * , https = require('node:https') - * , express = require('express') - * , app = express(); - * - * http.createServer(app).listen(80); - * https.createServer({ ... }, app).listen(443); - * - * @return {http.Server} - * @public - */ - -app.listen = function listen() { - var server = http.createServer(this) - var args = Array.prototype.slice.call(arguments) - if (typeof args[args.length - 1] === 'function') { - var done = args[args.length - 1] = once(args[args.length - 1]) - server.once('error', done) - } - return server.listen.apply(server, args) -} - -/** - * Log error using console.error. - * - * @param {Error} err - * @private - */ - -function logerror(err) { - /* istanbul ignore next */ - if (this.get('env') !== 'test') console.error(err.stack || err.toString()); -} - -/** - * Try rendering a view. - * @private - */ - -function tryRender(view, options, callback) { - try { - view.render(options, callback); - } catch (err) { - callback(err); - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/express.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/express.js deleted file mode 100644 index 2d502eb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/express.js +++ /dev/null @@ -1,81 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - */ - -var bodyParser = require('body-parser') -var EventEmitter = require('node:events').EventEmitter; -var mixin = require('merge-descriptors'); -var proto = require('./application'); -var Router = require('router'); -var req = require('./request'); -var res = require('./response'); - -/** - * Expose `createApplication()`. - */ - -exports = module.exports = createApplication; - -/** - * Create an express application. - * - * @return {Function} - * @api public - */ - -function createApplication() { - var app = function(req, res, next) { - app.handle(req, res, next); - }; - - mixin(app, EventEmitter.prototype, false); - mixin(app, proto, false); - - // expose the prototype that will get set on requests - app.request = Object.create(req, { - app: { configurable: true, enumerable: true, writable: true, value: app } - }) - - // expose the prototype that will get set on responses - app.response = Object.create(res, { - app: { configurable: true, enumerable: true, writable: true, value: app } - }) - - app.init(); - return app; -} - -/** - * Expose the prototypes. - */ - -exports.application = proto; -exports.request = req; -exports.response = res; - -/** - * Expose constructors. - */ - -exports.Route = Router.Route; -exports.Router = Router; - -/** - * Expose middleware - */ - -exports.json = bodyParser.json -exports.raw = bodyParser.raw -exports.static = require('serve-static'); -exports.text = bodyParser.text -exports.urlencoded = bodyParser.urlencoded diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/request.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/request.js deleted file mode 100644 index d8e5263..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/request.js +++ /dev/null @@ -1,515 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var accepts = require('accepts'); -var isIP = require('node:net').isIP; -var typeis = require('type-is'); -var http = require('node:http'); -var fresh = require('fresh'); -var parseRange = require('range-parser'); -var parse = require('parseurl'); -var proxyaddr = require('proxy-addr'); - -/** - * Request prototype. - * @public - */ - -var req = Object.create(http.IncomingMessage.prototype) - -/** - * Module exports. - * @public - */ - -module.exports = req - -/** - * Return request header. - * - * The `Referrer` header field is special-cased, - * both `Referrer` and `Referer` are interchangeable. - * - * Examples: - * - * req.get('Content-Type'); - * // => "text/plain" - * - * req.get('content-type'); - * // => "text/plain" - * - * req.get('Something'); - * // => undefined - * - * Aliased as `req.header()`. - * - * @param {String} name - * @return {String} - * @public - */ - -req.get = -req.header = function header(name) { - if (!name) { - throw new TypeError('name argument is required to req.get'); - } - - if (typeof name !== 'string') { - throw new TypeError('name must be a string to req.get'); - } - - var lc = name.toLowerCase(); - - switch (lc) { - case 'referer': - case 'referrer': - return this.headers.referrer - || this.headers.referer; - default: - return this.headers[lc]; - } -}; - -/** - * To do: update docs. - * - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single MIME type string - * such as "application/json", an extension name - * such as "json", a comma-delimited list such as "json, html, text/plain", - * an argument list such as `"json", "html", "text/plain"`, - * or an array `["json", "html", "text/plain"]`. When a list - * or array is given, the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * req.accepts('html'); - * // => "html" - * - * // Accept: text/*, application/json - * req.accepts('html'); - * // => "html" - * req.accepts('text/html'); - * // => "text/html" - * req.accepts('json, text'); - * // => "json" - * req.accepts('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * req.accepts('image/png'); - * req.accepts('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * req.accepts(['html', 'json']); - * req.accepts('html', 'json'); - * req.accepts('html, json'); - * // => "json" - * - * @param {String|Array} type(s) - * @return {String|Array|Boolean} - * @public - */ - -req.accepts = function(){ - var accept = accepts(this); - return accept.types.apply(accept, arguments); -}; - -/** - * Check if the given `encoding`s are accepted. - * - * @param {String} ...encoding - * @return {String|Array} - * @public - */ - -req.acceptsEncodings = function(){ - var accept = accepts(this); - return accept.encodings.apply(accept, arguments); -}; - -/** - * Check if the given `charset`s are acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} ...charset - * @return {String|Array} - * @public - */ - -req.acceptsCharsets = function(){ - var accept = accepts(this); - return accept.charsets.apply(accept, arguments); -}; - -/** - * Check if the given `lang`s are acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} ...lang - * @return {String|Array} - * @public - */ - -req.acceptsLanguages = function(){ - var accept = accepts(this); - return accept.languages.apply(accept, arguments); -}; - -/** - * Parse Range header field, capping to the given `size`. - * - * Unspecified ranges such as "0-" require knowledge of your resource length. In - * the case of a byte range this is of course the total number of bytes. If the - * Range header field is not given `undefined` is returned, `-1` when unsatisfiable, - * and `-2` when syntactically invalid. - * - * When ranges are returned, the array has a "type" property which is the type of - * range that is required (most commonly, "bytes"). Each array element is an object - * with a "start" and "end" property for the portion of the range. - * - * The "combine" option can be set to `true` and overlapping & adjacent ranges - * will be combined into a single range. - * - * NOTE: remember that ranges are inclusive, so for example "Range: users=0-3" - * should respond with 4 users when available, not 3. - * - * @param {number} size - * @param {object} [options] - * @param {boolean} [options.combine=false] - * @return {number|array} - * @public - */ - -req.range = function range(size, options) { - var range = this.get('Range'); - if (!range) return; - return parseRange(size, range, options); -}; - -/** - * Parse the query string of `req.url`. - * - * This uses the "query parser" setting to parse the raw - * string into an object. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'query', function query(){ - var queryparse = this.app.get('query parser fn'); - - if (!queryparse) { - // parsing is disabled - return Object.create(null); - } - - var querystring = parse(this).query; - - return queryparse(querystring); -}); - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains the given mime `type`. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * req.is('html'); - * req.is('text/html'); - * req.is('text/*'); - * // => true - * - * // When Content-Type is application/json - * req.is('json'); - * req.is('application/json'); - * req.is('application/*'); - * // => true - * - * req.is('html'); - * // => false - * - * @param {String|Array} types... - * @return {String|false|null} - * @public - */ - -req.is = function is(types) { - var arr = types; - - // support flattened arguments - if (!Array.isArray(types)) { - arr = new Array(arguments.length); - for (var i = 0; i < arr.length; i++) { - arr[i] = arguments[i]; - } - } - - return typeis(this, arr); -}; - -/** - * Return the protocol string "http" or "https" - * when requested with TLS. When the "trust proxy" - * setting trusts the socket address, the - * "X-Forwarded-Proto" header field will be trusted - * and used if present. - * - * If you're running behind a reverse proxy that - * supplies https for you this may be enabled. - * - * @return {String} - * @public - */ - -defineGetter(req, 'protocol', function protocol(){ - var proto = this.connection.encrypted - ? 'https' - : 'http'; - var trust = this.app.get('trust proxy fn'); - - if (!trust(this.connection.remoteAddress, 0)) { - return proto; - } - - // Note: X-Forwarded-Proto is normally only ever a - // single value, but this is to be safe. - var header = this.get('X-Forwarded-Proto') || proto - var index = header.indexOf(',') - - return index !== -1 - ? header.substring(0, index).trim() - : header.trim() -}); - -/** - * Short-hand for: - * - * req.protocol === 'https' - * - * @return {Boolean} - * @public - */ - -defineGetter(req, 'secure', function secure(){ - return this.protocol === 'https'; -}); - -/** - * Return the remote address from the trusted proxy. - * - * The is the remote address on the socket unless - * "trust proxy" is set. - * - * @return {String} - * @public - */ - -defineGetter(req, 'ip', function ip(){ - var trust = this.app.get('trust proxy fn'); - return proxyaddr(this, trust); -}); - -/** - * When "trust proxy" is set, trusted proxy addresses + client. - * - * For example if the value were "client, proxy1, proxy2" - * you would receive the array `["client", "proxy1", "proxy2"]` - * where "proxy2" is the furthest down-stream and "proxy1" and - * "proxy2" were trusted. - * - * @return {Array} - * @public - */ - -defineGetter(req, 'ips', function ips() { - var trust = this.app.get('trust proxy fn'); - var addrs = proxyaddr.all(this, trust); - - // reverse the order (to farthest -> closest) - // and remove socket address - addrs.reverse().pop() - - return addrs -}); - -/** - * Return subdomains as an array. - * - * Subdomains are the dot-separated parts of the host before the main domain of - * the app. By default, the domain of the app is assumed to be the last two - * parts of the host. This can be changed by setting "subdomain offset". - * - * For example, if the domain is "tobi.ferrets.example.com": - * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. - * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. - * - * @return {Array} - * @public - */ - -defineGetter(req, 'subdomains', function subdomains() { - var hostname = this.hostname; - - if (!hostname) return []; - - var offset = this.app.get('subdomain offset'); - var subdomains = !isIP(hostname) - ? hostname.split('.').reverse() - : [hostname]; - - return subdomains.slice(offset); -}); - -/** - * Short-hand for `url.parse(req.url).pathname`. - * - * @return {String} - * @public - */ - -defineGetter(req, 'path', function path() { - return parse(this).pathname; -}); - -/** - * Parse the "Host" header field to a host. - * - * When the "trust proxy" setting trusts the socket - * address, the "X-Forwarded-Host" header field will - * be trusted. - * - * @return {String} - * @public - */ - -defineGetter(req, 'host', function host(){ - var trust = this.app.get('trust proxy fn'); - var val = this.get('X-Forwarded-Host'); - - if (!val || !trust(this.connection.remoteAddress, 0)) { - val = this.get('Host'); - } else if (val.indexOf(',') !== -1) { - // Note: X-Forwarded-Host is normally only ever a - // single value, but this is to be safe. - val = val.substring(0, val.indexOf(',')).trimRight() - } - - return val || undefined; -}); - -/** - * Parse the "Host" header field to a hostname. - * - * When the "trust proxy" setting trusts the socket - * address, the "X-Forwarded-Host" header field will - * be trusted. - * - * @return {String} - * @api public - */ - -defineGetter(req, 'hostname', function hostname(){ - var host = this.host; - - if (!host) return; - - // IPv6 literal support - var offset = host[0] === '[' - ? host.indexOf(']') + 1 - : 0; - var index = host.indexOf(':', offset); - - return index !== -1 - ? host.substring(0, index) - : host; -}); - -/** - * Check if the request is fresh, aka - * Last-Modified or the ETag - * still match. - * - * @return {Boolean} - * @public - */ - -defineGetter(req, 'fresh', function(){ - var method = this.method; - var res = this.res - var status = res.statusCode - - // GET or HEAD for weak freshness validation only - if ('GET' !== method && 'HEAD' !== method) return false; - - // 2xx or 304 as per rfc2616 14.26 - if ((status >= 200 && status < 300) || 304 === status) { - return fresh(this.headers, { - 'etag': res.get('ETag'), - 'last-modified': res.get('Last-Modified') - }) - } - - return false; -}); - -/** - * Check if the request is stale, aka - * "Last-Modified" and / or the "ETag" for the - * resource has changed. - * - * @return {Boolean} - * @public - */ - -defineGetter(req, 'stale', function stale(){ - return !this.fresh; -}); - -/** - * Check if the request was an _XMLHttpRequest_. - * - * @return {Boolean} - * @public - */ - -defineGetter(req, 'xhr', function xhr(){ - var val = this.get('X-Requested-With') || ''; - return val.toLowerCase() === 'xmlhttprequest'; -}); - -/** - * Helper function for creating a getter on an object. - * - * @param {Object} obj - * @param {String} name - * @param {Function} getter - * @private - */ -function defineGetter(obj, name, getter) { - Object.defineProperty(obj, name, { - configurable: true, - enumerable: true, - get: getter - }); -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/response.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/response.js deleted file mode 100644 index 9362d0e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/response.js +++ /dev/null @@ -1,1039 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var contentDisposition = require('content-disposition'); -var createError = require('http-errors') -var encodeUrl = require('encodeurl'); -var escapeHtml = require('escape-html'); -var http = require('node:http'); -var onFinished = require('on-finished'); -var mime = require('mime-types') -var path = require('node:path'); -var pathIsAbsolute = require('node:path').isAbsolute; -var statuses = require('statuses') -var sign = require('cookie-signature').sign; -var normalizeType = require('./utils').normalizeType; -var normalizeTypes = require('./utils').normalizeTypes; -var setCharset = require('./utils').setCharset; -var cookie = require('cookie'); -var send = require('send'); -var extname = path.extname; -var resolve = path.resolve; -var vary = require('vary'); - -/** - * Response prototype. - * @public - */ - -var res = Object.create(http.ServerResponse.prototype) - -/** - * Module exports. - * @public - */ - -module.exports = res - -/** - * Set the HTTP status code for the response. - * - * Expects an integer value between 100 and 999 inclusive. - * Throws an error if the provided status code is not an integer or if it's outside the allowable range. - * - * @param {number} code - The HTTP status code to set. - * @return {ServerResponse} - Returns itself for chaining methods. - * @throws {TypeError} If `code` is not an integer. - * @throws {RangeError} If `code` is outside the range 100 to 999. - * @public - */ - -res.status = function status(code) { - // Check if the status code is not an integer - if (!Number.isInteger(code)) { - throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); - } - // Check if the status code is outside of Node's valid range - if (code < 100 || code > 999) { - throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); - } - - this.statusCode = code; - return this; -}; - -/** - * Set Link header field with the given `links`. - * - * Examples: - * - * res.links({ - * next: 'http://api.example.com/users?page=2', - * last: 'http://api.example.com/users?page=5', - * pages: [ - * 'http://api.example.com/users?page=1', - * 'http://api.example.com/users?page=2' - * ] - * }); - * - * @param {Object} links - * @return {ServerResponse} - * @public - */ - -res.links = function(links) { - var link = this.get('Link') || ''; - if (link) link += ', '; - return this.set('Link', link + Object.keys(links).map(function(rel) { - // Allow multiple links if links[rel] is an array - if (Array.isArray(links[rel])) { - return links[rel].map(function (singleLink) { - return `<${singleLink}>; rel="${rel}"`; - }).join(', '); - } else { - return `<${links[rel]}>; rel="${rel}"`; - } - }).join(', ')); -}; - -/** - * Send a response. - * - * Examples: - * - * res.send(Buffer.from('wahoo')); - * res.send({ some: 'json' }); - * res.send('

some html

'); - * - * @param {string|number|boolean|object|Buffer} body - * @public - */ - -res.send = function send(body) { - var chunk = body; - var encoding; - var req = this.req; - var type; - - // settings - var app = this.app; - - switch (typeof chunk) { - // string defaulting to html - case 'string': - if (!this.get('Content-Type')) { - this.type('html'); - } - break; - case 'boolean': - case 'number': - case 'object': - if (chunk === null) { - chunk = ''; - } else if (ArrayBuffer.isView(chunk)) { - if (!this.get('Content-Type')) { - this.type('bin'); - } - } else { - return this.json(chunk); - } - break; - } - - // write strings in utf-8 - if (typeof chunk === 'string') { - encoding = 'utf8'; - type = this.get('Content-Type'); - - // reflect this in content-type - if (typeof type === 'string') { - this.set('Content-Type', setCharset(type, 'utf-8')); - } - } - - // determine if ETag should be generated - var etagFn = app.get('etag fn') - var generateETag = !this.get('ETag') && typeof etagFn === 'function' - - // populate Content-Length - var len - if (chunk !== undefined) { - if (Buffer.isBuffer(chunk)) { - // get length of Buffer - len = chunk.length - } else if (!generateETag && chunk.length < 1000) { - // just calculate length when no ETag + small chunk - len = Buffer.byteLength(chunk, encoding) - } else { - // convert chunk to Buffer and calculate - chunk = Buffer.from(chunk, encoding) - encoding = undefined; - len = chunk.length - } - - this.set('Content-Length', len); - } - - // populate ETag - var etag; - if (generateETag && len !== undefined) { - if ((etag = etagFn(chunk, encoding))) { - this.set('ETag', etag); - } - } - - // freshness - if (req.fresh) this.status(304); - - // strip irrelevant headers - if (204 === this.statusCode || 304 === this.statusCode) { - this.removeHeader('Content-Type'); - this.removeHeader('Content-Length'); - this.removeHeader('Transfer-Encoding'); - chunk = ''; - } - - // alter headers for 205 - if (this.statusCode === 205) { - this.set('Content-Length', '0') - this.removeHeader('Transfer-Encoding') - chunk = '' - } - - if (req.method === 'HEAD') { - // skip body for HEAD - this.end(); - } else { - // respond - this.end(chunk, encoding); - } - - return this; -}; - -/** - * Send JSON response. - * - * Examples: - * - * res.json(null); - * res.json({ user: 'tj' }); - * - * @param {string|number|boolean|object} obj - * @public - */ - -res.json = function json(obj) { - // settings - var app = this.app; - var escape = app.get('json escape') - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = stringify(obj, replacer, spaces, escape) - - // content-type - if (!this.get('Content-Type')) { - this.set('Content-Type', 'application/json'); - } - - return this.send(body); -}; - -/** - * Send JSON response with JSONP callback support. - * - * Examples: - * - * res.jsonp(null); - * res.jsonp({ user: 'tj' }); - * - * @param {string|number|boolean|object} obj - * @public - */ - -res.jsonp = function jsonp(obj) { - // settings - var app = this.app; - var escape = app.get('json escape') - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = stringify(obj, replacer, spaces, escape) - var callback = this.req.query[app.get('jsonp callback name')]; - - // content-type - if (!this.get('Content-Type')) { - this.set('X-Content-Type-Options', 'nosniff'); - this.set('Content-Type', 'application/json'); - } - - // fixup callback - if (Array.isArray(callback)) { - callback = callback[0]; - } - - // jsonp - if (typeof callback === 'string' && callback.length !== 0) { - this.set('X-Content-Type-Options', 'nosniff'); - this.set('Content-Type', 'text/javascript'); - - // restrict callback charset - callback = callback.replace(/[^\[\]\w$.]/g, ''); - - if (body === undefined) { - // empty argument - body = '' - } else if (typeof body === 'string') { - // replace chars not allowed in JavaScript that are in JSON - body = body - .replace(/\u2028/g, '\\u2028') - .replace(/\u2029/g, '\\u2029') - } - - // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse" - // the typeof check is just to reduce client error noise - body = '/**/ typeof ' + callback + ' === \'function\' && ' + callback + '(' + body + ');'; - } - - return this.send(body); -}; - -/** - * Send given HTTP status code. - * - * Sets the response status to `statusCode` and the body of the - * response to the standard description from node's http.STATUS_CODES - * or the statusCode number if no description. - * - * Examples: - * - * res.sendStatus(200); - * - * @param {number} statusCode - * @public - */ - -res.sendStatus = function sendStatus(statusCode) { - var body = statuses.message[statusCode] || String(statusCode) - - this.status(statusCode); - this.type('txt'); - - return this.send(body); -}; - -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `callback(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.headersSent` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendFile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendFile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendFile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @public - */ - -res.sendFile = function sendFile(path, options, callback) { - var done = callback; - var req = this.req; - var res = this; - var next = req.next; - var opts = options || {}; - - if (!path) { - throw new TypeError('path argument is required to res.sendFile'); - } - - if (typeof path !== 'string') { - throw new TypeError('path must be a string to res.sendFile') - } - - // support function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; - } - - if (!opts.root && !pathIsAbsolute(path)) { - throw new TypeError('path must be absolute or specify root to res.sendFile'); - } - - // create file stream - var pathname = encodeURI(path); - - // wire application etag option to send - opts.etag = this.app.enabled('etag'); - var file = send(req, pathname, opts); - - // transfer - sendfile(res, file, opts, function (err) { - if (done) return done(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') { - next(err); - } - }); -}; - -/** - * Transfer the file at the given `path` as an attachment. - * - * Optionally providing an alternate attachment `filename`, - * and optional callback `callback(err)`. The callback is invoked - * when the data transfer is complete, or when an error has - * occurred. Be sure to check `res.headersSent` if you plan to respond. - * - * Optionally providing an `options` object to use with `res.sendFile()`. - * This function will set the `Content-Disposition` header, overriding - * any `Content-Disposition` header passed as header options in order - * to set the attachment and filename. - * - * This method uses `res.sendFile()`. - * - * @public - */ - -res.download = function download (path, filename, options, callback) { - var done = callback; - var name = filename; - var opts = options || null - - // support function as second or third arg - if (typeof filename === 'function') { - done = filename; - name = null; - opts = null - } else if (typeof options === 'function') { - done = options - opts = null - } - - // support optional filename, where options may be in it's place - if (typeof filename === 'object' && - (typeof options === 'function' || options === undefined)) { - name = null - opts = filename - } - - // set Content-Disposition when file is sent - var headers = { - 'Content-Disposition': contentDisposition(name || path) - }; - - // merge user-provided headers - if (opts && opts.headers) { - var keys = Object.keys(opts.headers) - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - if (key.toLowerCase() !== 'content-disposition') { - headers[key] = opts.headers[key] - } - } - } - - // merge user-provided options - opts = Object.create(opts) - opts.headers = headers - - // Resolve the full path for sendFile - var fullPath = !opts.root - ? resolve(path) - : path - - // send file - return this.sendFile(fullPath, opts, done) -}; - -/** - * Set _Content-Type_ response header with `type` through `mime.contentType()` - * when it does not contain "/", or set the Content-Type to `type` otherwise. - * When no mapping is found though `mime.contentType()`, the type is set to - * "application/octet-stream". - * - * Examples: - * - * res.type('.html'); - * res.type('html'); - * res.type('json'); - * res.type('application/json'); - * res.type('png'); - * - * @param {String} type - * @return {ServerResponse} for chaining - * @public - */ - -res.contentType = -res.type = function contentType(type) { - var ct = type.indexOf('/') === -1 - ? (mime.contentType(type) || 'application/octet-stream') - : type; - - return this.set('Content-Type', ct); -}; - -/** - * Respond to the Acceptable formats using an `obj` - * of mime-type callbacks. - * - * This method uses `req.accepted`, an array of - * acceptable types ordered by their quality values. - * When "Accept" is not present the _first_ callback - * is invoked, otherwise the first match is used. When - * no match is performed the server responds with - * 406 "Not Acceptable". - * - * Content-Type is set for you, however if you choose - * you may alter this within the callback using `res.type()` - * or `res.set('Content-Type', ...)`. - * - * res.format({ - * 'text/plain': function(){ - * res.send('hey'); - * }, - * - * 'text/html': function(){ - * res.send('

hey

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

hey

'); - * }, - * - * json: function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * By default Express passes an `Error` - * with a `.status` of 406 to `next(err)` - * if a match is not made. If you provide - * a `.default` callback it will be invoked - * instead. - * - * @param {Object} obj - * @return {ServerResponse} for chaining - * @public - */ - -res.format = function(obj){ - var req = this.req; - var next = req.next; - - var keys = Object.keys(obj) - .filter(function (v) { return v !== 'default' }) - - var key = keys.length > 0 - ? req.accepts(keys) - : false; - - this.vary("Accept"); - - if (key) { - this.set('Content-Type', normalizeType(key).value); - obj[key](req, this, next); - } else if (obj.default) { - obj.default(req, this, next) - } else { - next(createError(406, { - types: normalizeTypes(keys).map(function (o) { return o.value }) - })) - } - - return this; -}; - -/** - * Set _Content-Disposition_ header to _attachment_ with optional `filename`. - * - * @param {String} filename - * @return {ServerResponse} - * @public - */ - -res.attachment = function attachment(filename) { - if (filename) { - this.type(extname(filename)); - } - - this.set('Content-Disposition', contentDisposition(filename)); - - return this; -}; - -/** - * Append additional header `field` with value `val`. - * - * Example: - * - * res.append('Link', ['', '']); - * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly'); - * res.append('Warning', '199 Miscellaneous warning'); - * - * @param {String} field - * @param {String|Array} val - * @return {ServerResponse} for chaining - * @public - */ - -res.append = function append(field, val) { - var prev = this.get(field); - var value = val; - - if (prev) { - // concat the new and prev vals - value = Array.isArray(prev) ? prev.concat(val) - : Array.isArray(val) ? [prev].concat(val) - : [prev, val] - } - - return this.set(field, value); -}; - -/** - * Set header `field` to `val`, or pass - * an object of header fields. - * - * Examples: - * - * res.set('Foo', ['bar', 'baz']); - * res.set('Accept', 'application/json'); - * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); - * - * Aliased as `res.header()`. - * - * When the set header is "Content-Type", the type is expanded to include - * the charset if not present using `mime.contentType()`. - * - * @param {String|Object} field - * @param {String|Array} val - * @return {ServerResponse} for chaining - * @public - */ - -res.set = -res.header = function header(field, val) { - if (arguments.length === 2) { - var value = Array.isArray(val) - ? val.map(String) - : String(val); - - // add charset to content-type - if (field.toLowerCase() === 'content-type') { - if (Array.isArray(value)) { - throw new TypeError('Content-Type cannot be set to an Array'); - } - value = mime.contentType(value) - } - - this.setHeader(field, value); - } else { - for (var key in field) { - this.set(key, field[key]); - } - } - return this; -}; - -/** - * Get value for header `field`. - * - * @param {String} field - * @return {String} - * @public - */ - -res.get = function(field){ - return this.getHeader(field); -}; - -/** - * Clear cookie `name`. - * - * @param {String} name - * @param {Object} [options] - * @return {ServerResponse} for chaining - * @public - */ - -res.clearCookie = function clearCookie(name, options) { - // Force cookie expiration by setting expires to the past - const opts = { path: '/', ...options, expires: new Date(1)}; - // ensure maxAge is not passed - delete opts.maxAge - - return this.cookie(name, '', opts); -}; - -/** - * Set cookie `name` to `value`, with the given `options`. - * - * Options: - * - * - `maxAge` max-age in milliseconds, converted to `expires` - * - `signed` sign the cookie - * - `path` defaults to "/" - * - * Examples: - * - * // "Remember Me" for 15 minutes - * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); - * - * // same as above - * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) - * - * @param {String} name - * @param {String|Object} value - * @param {Object} [options] - * @return {ServerResponse} for chaining - * @public - */ - -res.cookie = function (name, value, options) { - var opts = { ...options }; - var secret = this.req.secret; - var signed = opts.signed; - - if (signed && !secret) { - throw new Error('cookieParser("secret") required for signed cookies'); - } - - var val = typeof value === 'object' - ? 'j:' + JSON.stringify(value) - : String(value); - - if (signed) { - val = 's:' + sign(val, secret); - } - - if (opts.maxAge != null) { - var maxAge = opts.maxAge - 0 - - if (!isNaN(maxAge)) { - opts.expires = new Date(Date.now() + maxAge) - opts.maxAge = Math.floor(maxAge / 1000) - } - } - - if (opts.path == null) { - opts.path = '/'; - } - - this.append('Set-Cookie', cookie.serialize(name, String(val), opts)); - - return this; -}; - -/** - * Set the location header to `url`. - * - * The given `url` can also be "back", which redirects - * to the _Referrer_ or _Referer_ headers or "/". - * - * Examples: - * - * res.location('/foo/bar').; - * res.location('http://example.com'); - * res.location('../login'); - * - * @param {String} url - * @return {ServerResponse} for chaining - * @public - */ - -res.location = function location(url) { - return this.set('Location', encodeUrl(url)); -}; - -/** - * Redirect to the given `url` with optional response `status` - * defaulting to 302. - * - * Examples: - * - * res.redirect('/foo/bar'); - * res.redirect('http://example.com'); - * res.redirect(301, 'http://example.com'); - * res.redirect('../login'); // /blog/post/1 -> /blog/login - * - * @public - */ - -res.redirect = function redirect(url) { - var address = url; - var body; - var status = 302; - - // allow status / url - if (arguments.length === 2) { - status = arguments[0] - address = arguments[1] - } - - // Set location header - address = this.location(address).get('Location'); - - // Support text/{plain,html} by default - this.format({ - text: function(){ - body = statuses.message[status] + '. Redirecting to ' + address - }, - - html: function(){ - var u = escapeHtml(address); - body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

' - }, - - default: function(){ - body = ''; - } - }); - - // Respond - this.status(status); - this.set('Content-Length', Buffer.byteLength(body)); - - if (this.req.method === 'HEAD') { - this.end(); - } else { - this.end(body); - } -}; - -/** - * Add `field` to Vary. If already present in the Vary set, then - * this call is simply ignored. - * - * @param {Array|String} field - * @return {ServerResponse} for chaining - * @public - */ - -res.vary = function(field){ - vary(this, field); - - return this; -}; - -/** - * Render `view` with the given `options` and optional callback `fn`. - * When a callback function is given a response will _not_ be made - * automatically, otherwise a response of _200_ and _text/html_ is given. - * - * Options: - * - * - `cache` boolean hinting to the engine it should cache - * - `filename` filename of the view being rendered - * - * @public - */ - -res.render = function render(view, options, callback) { - var app = this.req.app; - var done = callback; - var opts = options || {}; - var req = this.req; - var self = this; - - // support callback function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; - } - - // merge res.locals - opts._locals = self.locals; - - // default callback to respond - done = done || function (err, str) { - if (err) return req.next(err); - self.send(str); - }; - - // render - app.render(view, opts, done); -}; - -// pipe the send file stream -function sendfile(res, file, options, callback) { - var done = false; - var streaming; - - // request aborted - function onaborted() { - if (done) return; - done = true; - - var err = new Error('Request aborted'); - err.code = 'ECONNABORTED'; - callback(err); - } - - // directory - function ondirectory() { - if (done) return; - done = true; - - var err = new Error('EISDIR, read'); - err.code = 'EISDIR'; - callback(err); - } - - // errors - function onerror(err) { - if (done) return; - done = true; - callback(err); - } - - // ended - function onend() { - if (done) return; - done = true; - callback(); - } - - // file - function onfile() { - streaming = false; - } - - // finished - function onfinish(err) { - if (err && err.code === 'ECONNRESET') return onaborted(); - if (err) return onerror(err); - if (done) return; - - setImmediate(function () { - if (streaming !== false && !done) { - onaborted(); - return; - } - - if (done) return; - done = true; - callback(); - }); - } - - // streaming - function onstream() { - streaming = true; - } - - file.on('directory', ondirectory); - file.on('end', onend); - file.on('error', onerror); - file.on('file', onfile); - file.on('stream', onstream); - onFinished(res, onfinish); - - if (options.headers) { - // set headers on successful transfer - file.on('headers', function headers(res) { - var obj = options.headers; - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - res.setHeader(k, obj[k]); - } - }); - } - - // pipe - file.pipe(res); -} - -/** - * Stringify JSON, like JSON.stringify, but v8 optimized, with the - * ability to escape characters that can trigger HTML sniffing. - * - * @param {*} value - * @param {function} replacer - * @param {number} spaces - * @param {boolean} escape - * @returns {string} - * @private - */ - -function stringify (value, replacer, spaces, escape) { - // v8 checks arguments.length for optimizing simple call - // https://bugs.chromium.org/p/v8/issues/detail?id=4730 - var json = replacer || spaces - ? JSON.stringify(value, replacer, spaces) - : JSON.stringify(value); - - if (escape && typeof json === 'string') { - json = json.replace(/[<>&]/g, function (c) { - switch (c.charCodeAt(0)) { - case 0x3c: - return '\\u003c' - case 0x3e: - return '\\u003e' - case 0x26: - return '\\u0026' - /* istanbul ignore next: unreachable default */ - default: - return c - } - }) - } - - return json -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/utils.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/utils.js deleted file mode 100644 index d53c5a1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/utils.js +++ /dev/null @@ -1,269 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @api private - */ - -var { METHODS } = require('node:http'); -var contentType = require('content-type'); -var etag = require('etag'); -var mime = require('mime-types') -var proxyaddr = require('proxy-addr'); -var qs = require('qs'); -var querystring = require('querystring'); - -/** - * A list of lowercased HTTP methods that are supported by Node.js. - * @api private - */ -exports.methods = METHODS.map((method) => method.toLowerCase()); - -/** - * Return strong ETag for `body`. - * - * @param {String|Buffer} body - * @param {String} [encoding] - * @return {String} - * @api private - */ - -exports.etag = createETagGenerator({ weak: false }) - -/** - * Return weak ETag for `body`. - * - * @param {String|Buffer} body - * @param {String} [encoding] - * @return {String} - * @api private - */ - -exports.wetag = createETagGenerator({ weak: true }) - -/** - * Normalize the given `type`, for example "html" becomes "text/html". - * - * @param {String} type - * @return {Object} - * @api private - */ - -exports.normalizeType = function(type){ - return ~type.indexOf('/') - ? acceptParams(type) - : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} } -}; - -/** - * Normalize `types`, for example "html" becomes "text/html". - * - * @param {Array} types - * @return {Array} - * @api private - */ - -exports.normalizeTypes = function(types) { - return types.map(exports.normalizeType); -}; - - -/** - * Parse accept params `str` returning an - * object with `.value`, `.quality` and `.params`. - * - * @param {String} str - * @return {Object} - * @api private - */ - -function acceptParams (str) { - var length = str.length; - var colonIndex = str.indexOf(';'); - var index = colonIndex === -1 ? length : colonIndex; - var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} }; - - while (index < length) { - var splitIndex = str.indexOf('=', index); - if (splitIndex === -1) break; - - var colonIndex = str.indexOf(';', index); - var endIndex = colonIndex === -1 ? length : colonIndex; - - if (splitIndex > endIndex) { - index = str.lastIndexOf(';', splitIndex - 1) + 1; - continue; - } - - var key = str.slice(index, splitIndex).trim(); - var value = str.slice(splitIndex + 1, endIndex).trim(); - - if (key === 'q') { - ret.quality = parseFloat(value); - } else { - ret.params[key] = value; - } - - index = endIndex + 1; - } - - return ret; -} - -/** - * Compile "etag" value to function. - * - * @param {Boolean|String|Function} val - * @return {Function} - * @api private - */ - -exports.compileETag = function(val) { - var fn; - - if (typeof val === 'function') { - return val; - } - - switch (val) { - case true: - case 'weak': - fn = exports.wetag; - break; - case false: - break; - case 'strong': - fn = exports.etag; - break; - default: - throw new TypeError('unknown value for etag function: ' + val); - } - - return fn; -} - -/** - * Compile "query parser" value to function. - * - * @param {String|Function} val - * @return {Function} - * @api private - */ - -exports.compileQueryParser = function compileQueryParser(val) { - var fn; - - if (typeof val === 'function') { - return val; - } - - switch (val) { - case true: - case 'simple': - fn = querystring.parse; - break; - case false: - break; - case 'extended': - fn = parseExtendedQueryString; - break; - default: - throw new TypeError('unknown value for query parser function: ' + val); - } - - return fn; -} - -/** - * Compile "proxy trust" value to function. - * - * @param {Boolean|String|Number|Array|Function} val - * @return {Function} - * @api private - */ - -exports.compileTrust = function(val) { - if (typeof val === 'function') return val; - - if (val === true) { - // Support plain true/false - return function(){ return true }; - } - - if (typeof val === 'number') { - // Support trusting hop count - return function(a, i){ return i < val }; - } - - if (typeof val === 'string') { - // Support comma-separated values - val = val.split(',') - .map(function (v) { return v.trim() }) - } - - return proxyaddr.compile(val || []); -} - -/** - * Set the charset in a given Content-Type string. - * - * @param {String} type - * @param {String} charset - * @return {String} - * @api private - */ - -exports.setCharset = function setCharset(type, charset) { - if (!type || !charset) { - return type; - } - - // parse type - var parsed = contentType.parse(type); - - // set charset - parsed.parameters.charset = charset; - - // format type - return contentType.format(parsed); -}; - -/** - * Create an ETag generator function, generating ETags with - * the given options. - * - * @param {object} options - * @return {function} - * @private - */ - -function createETagGenerator (options) { - return function generateETag (body, encoding) { - var buf = !Buffer.isBuffer(body) - ? Buffer.from(body, encoding) - : body - - return etag(buf, options) - } -} - -/** - * Parse an extended query string with qs. - * - * @param {String} str - * @return {Object} - * @private - */ - -function parseExtendedQueryString(str) { - return qs.parse(str, { - allowPrototypes: true - }); -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/view.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/view.js deleted file mode 100644 index d66b4a2..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/lib/view.js +++ /dev/null @@ -1,205 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var debug = require('debug')('express:view'); -var path = require('node:path'); -var fs = require('node:fs'); - -/** - * Module variables. - * @private - */ - -var dirname = path.dirname; -var basename = path.basename; -var extname = path.extname; -var join = path.join; -var resolve = path.resolve; - -/** - * Module exports. - * @public - */ - -module.exports = View; - -/** - * Initialize a new `View` with the given `name`. - * - * Options: - * - * - `defaultEngine` the default template engine name - * - `engines` template engine require() cache - * - `root` root path for view lookup - * - * @param {string} name - * @param {object} options - * @public - */ - -function View(name, options) { - var opts = options || {}; - - this.defaultEngine = opts.defaultEngine; - this.ext = extname(name); - this.name = name; - this.root = opts.root; - - if (!this.ext && !this.defaultEngine) { - throw new Error('No default engine was specified and no extension was provided.'); - } - - var fileName = name; - - if (!this.ext) { - // get extension from default engine name - this.ext = this.defaultEngine[0] !== '.' - ? '.' + this.defaultEngine - : this.defaultEngine; - - fileName += this.ext; - } - - if (!opts.engines[this.ext]) { - // load engine - var mod = this.ext.slice(1) - debug('require "%s"', mod) - - // default engine export - var fn = require(mod).__express - - if (typeof fn !== 'function') { - throw new Error('Module "' + mod + '" does not provide a view engine.') - } - - opts.engines[this.ext] = fn - } - - // store loaded engine - this.engine = opts.engines[this.ext]; - - // lookup path - this.path = this.lookup(fileName); -} - -/** - * Lookup view by the given `name` - * - * @param {string} name - * @private - */ - -View.prototype.lookup = function lookup(name) { - var path; - var roots = [].concat(this.root); - - debug('lookup "%s"', name); - - for (var i = 0; i < roots.length && !path; i++) { - var root = roots[i]; - - // resolve the path - var loc = resolve(root, name); - var dir = dirname(loc); - var file = basename(loc); - - // resolve the file - path = this.resolve(dir, file); - } - - return path; -}; - -/** - * Render with the given options. - * - * @param {object} options - * @param {function} callback - * @private - */ - -View.prototype.render = function render(options, callback) { - var sync = true; - - debug('render "%s"', this.path); - - // render, normalizing sync callbacks - this.engine(this.path, options, function onRender() { - if (!sync) { - return callback.apply(this, arguments); - } - - // copy arguments - var args = new Array(arguments.length); - var cntx = this; - - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - // force callback to be async - return process.nextTick(function renderTick() { - return callback.apply(cntx, args); - }); - }); - - sync = false; -}; - -/** - * Resolve the file within the given directory. - * - * @param {string} dir - * @param {string} file - * @private - */ - -View.prototype.resolve = function resolve(dir, file) { - var ext = this.ext; - - // . - var path = join(dir, file); - var stat = tryStat(path); - - if (stat && stat.isFile()) { - return path; - } - - // /index. - path = join(dir, basename(file, ext), 'index' + ext); - stat = tryStat(path); - - if (stat && stat.isFile()) { - return path; - } -}; - -/** - * Return a stat, maybe. - * - * @param {string} path - * @return {fs.Stats} - * @private - */ - -function tryStat(path) { - debug('stat "%s"', path); - - try { - return fs.statSync(path); - } catch (e) { - return undefined; - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/package.json deleted file mode 100644 index bdcd25e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/express/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "name": "express", - "description": "Fast, unopinionated, minimalist web framework", - "version": "5.1.0", - "author": "TJ Holowaychuk ", - "contributors": [ - "Aaron Heckmann ", - "Ciaran Jessup ", - "Douglas Christopher Wilson ", - "Guillermo Rauch ", - "Jonathan Ong ", - "Roman Shtylman ", - "Young Jae Sim " - ], - "license": "MIT", - "repository": "expressjs/express", - "homepage": "https://expressjs.com/", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - }, - "keywords": [ - "express", - "framework", - "sinatra", - "web", - "http", - "rest", - "restful", - "router", - "app", - "api" - ], - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "devDependencies": { - "after": "0.8.2", - "connect-redis": "^8.0.1", - "cookie-parser": "1.4.7", - "cookie-session": "2.1.0", - "ejs": "^3.1.10", - "eslint": "8.47.0", - "express-session": "^1.18.1", - "hbs": "4.2.0", - "marked": "^15.0.3", - "method-override": "3.0.0", - "mocha": "^10.7.3", - "morgan": "1.10.0", - "nyc": "^17.1.0", - "pbkdf2-password": "1.2.1", - "supertest": "^6.3.0", - "vhost": "~3.0.2" - }, - "engines": { - "node": ">= 18" - }, - "files": [ - "LICENSE", - "History.md", - "Readme.md", - "index.js", - "lib/" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/", - "test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", - "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/HISTORY.md deleted file mode 100644 index 4bc1850..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/HISTORY.md +++ /dev/null @@ -1,233 +0,0 @@ -v2.1.0 / 2025-03-05 -================== - - * deps: - * use caret notation for dependency versions - * encodeurl@^2.0.0 - * debug@^4.4.0 - * remove `ServerResponse.headersSent` support check - * remove setImmediate support check - * update test dependencies - * remove unnecessary devDependency `safe-buffer` - * remove `unpipe` package and use native `unpipe()` method - * remove unnecessary devDependency `readable-stream` - * refactor: use object spread to copy error headers - * refactor: use replaceAll instead of replace with a regex - * refactor: replace setHeaders function with optimized inline header setting - -v2.0.0 / 2024-09-02 -================== - - * drop support for node <18 - * ignore status message for HTTP/2 (#53) - -v1.3.1 / 2024-09-11 -================== - - * deps: encodeurl@~2.0.0 - -v1.3.0 / 2024-09-03 -================== - - * ignore status message for HTTP/2 (#53) - -v1.2.1 / 2024-09-02 -================== - - * Gracefully handle when handling an error and socket is null - -1.2.0 / 2022-03-22 -================== - - * Remove set content headers that break response - * deps: on-finished@2.4.1 - * deps: statuses@2.0.1 - - Rename `425 Unordered Collection` to standard `425 Too Early` - -1.1.2 / 2019-05-09 -================== - - * Set stricter `Content-Security-Policy` header - * deps: parseurl@~1.3.3 - * deps: statuses@~1.5.0 - -1.1.1 / 2018-03-06 -================== - - * Fix 404 output for bad / missing pathnames - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: statuses@~1.4.0 - -1.1.0 / 2017-09-24 -================== - - * Use `res.headersSent` when available - -1.0.6 / 2017-09-22 -================== - - * deps: debug@2.6.9 - -1.0.5 / 2017-09-15 -================== - - * deps: parseurl@~1.3.2 - - perf: reduce overhead for full URLs - - perf: unroll the "fast-path" `RegExp` - -1.0.4 / 2017-08-03 -================== - - * deps: debug@2.6.8 - -1.0.3 / 2017-05-16 -================== - - * deps: debug@2.6.7 - - deps: ms@2.0.0 - -1.0.2 / 2017-04-22 -================== - - * deps: debug@2.6.4 - - deps: ms@0.7.3 - -1.0.1 / 2017-03-21 -================== - - * Fix missing `` in HTML document - * deps: debug@2.6.3 - - Fix: `DEBUG_MAX_ARRAY_LENGTH` - -1.0.0 / 2017-02-15 -================== - - * Fix exception when `err` cannot be converted to a string - * Fully URL-encode the pathname in the 404 message - * Only include the pathname in the 404 message - * Send complete HTML document - * Set `Content-Security-Policy: default-src 'self'` header - * deps: debug@2.6.1 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable set to `3` or higher - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - -0.5.1 / 2016-11-12 -================== - - * Fix exception when `err.headers` is not an object - * deps: statuses@~1.3.1 - * perf: hoist regular expressions - * perf: remove duplicate validation path - -0.5.0 / 2016-06-15 -================== - - * Change invalid or non-numeric status code to 500 - * Overwrite status message to match set status code - * Prefer `err.statusCode` if `err.status` is invalid - * Set response headers from `err.headers` object - * Use `statuses` instead of `http` module for status messages - - Includes all defined status messages - -0.4.1 / 2015-12-02 -================== - - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - -0.4.0 / 2015-06-14 -================== - - * Fix a false-positive when unpiping in Node.js 0.8 - * Support `statusCode` property on `Error` objects - * Use `unpipe` module for unpiping requests - * deps: escape-html@1.0.2 - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * perf: enable strict mode - * perf: remove argument reassignment - -0.3.6 / 2015-05-11 -================== - - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - -0.3.5 / 2015-04-22 -================== - - * deps: on-finished@~2.2.1 - - Fix `isFinished(req)` when data buffered - -0.3.4 / 2015-03-15 -================== - - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - -0.3.3 / 2015-01-01 -================== - - * deps: debug@~2.1.1 - * deps: on-finished@~2.2.0 - -0.3.2 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.3.1 / 2014-10-16 -================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - -0.3.0 / 2014-09-17 -================== - - * Terminate in progress response only on error - * Use `on-finished` to determine request status - -0.2.0 / 2014-09-03 -================== - - * Set `X-Content-Type-Options: nosniff` header - * deps: debug@~2.0.0 - -0.1.0 / 2014-07-16 -================== - - * Respond after request fully read - - prevents hung responses and socket hang ups - * deps: debug@1.0.4 - -0.0.3 / 2014-07-11 -================== - - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.0.2 / 2014-06-19 -================== - - * Handle invalid status codes - -0.0.1 / 2014-06-05 -================== - - * deps: debug@1.0.2 - -0.0.0 / 2014-06-05 -================== - - * Extracted from connect/express diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/LICENSE deleted file mode 100644 index 6022106..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/README.md deleted file mode 100644 index 6244a13..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# finalhandler - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Node.js function to invoke as the final step to respond to HTTP request. - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install finalhandler -``` - -## API - -```js -var finalhandler = require('finalhandler') -``` - -### finalhandler(req, res, [options]) - -Returns function to be invoked as the final step for the given `req` and `res`. -This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will -write out a 404 response to the `res`. If it is truthy, an error response will -be written out to the `res` or `res` will be terminated if a response has already -started. - -When an error is written, the following information is added to the response: - - * The `res.statusCode` is set from `err.status` (or `err.statusCode`). If - this value is outside the 4xx or 5xx range, it will be set to 500. - * The `res.statusMessage` is set according to the status code. - * The body will be the HTML of the status code message if `env` is - `'production'`, otherwise will be `err.stack`. - * Any headers specified in an `err.headers` object. - -The final handler will also unpipe anything from `req` when it is invoked. - -#### options.env - -By default, the environment is determined by `NODE_ENV` variable, but it can be -overridden by this option. - -#### options.onerror - -Provide a function to be called with the `err` when it exists. Can be used for -writing errors to a central location without excessive function generation. Called -as `onerror(err, req, res)`. - -## Examples - -### always 404 - -```js -var finalhandler = require('finalhandler') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - done() -}) - -server.listen(3000) -``` - -### perform simple action - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) -``` - -### use with middleware-style functions - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -var serve = serveStatic('public') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - serve(req, res, done) -}) - -server.listen(3000) -``` - -### keep log of all errors - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res, { onerror: logerror }) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) - -function logerror (err) { - console.error(err.stack || err.toString()) -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/finalhandler.svg -[npm-url]: https://npmjs.org/package/finalhandler -[node-image]: https://img.shields.io/node/v/finalhandler.svg -[node-url]: https://nodejs.org/en/download -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg -[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master -[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg -[downloads-url]: https://npmjs.org/package/finalhandler -[github-actions-ci-image]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml/badge.svg -[github-actions-ci-url]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/index.js deleted file mode 100644 index bf15e48..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/index.js +++ /dev/null @@ -1,293 +0,0 @@ -/*! - * finalhandler - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var debug = require('debug')('finalhandler') -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var onFinished = require('on-finished') -var parseUrl = require('parseurl') -var statuses = require('statuses') - -/** - * Module variables. - * @private - */ - -var isFinished = onFinished.isFinished - -/** - * Create a minimal HTML document. - * - * @param {string} message - * @private - */ - -function createHtmlDocument (message) { - var body = escapeHtml(message) - .replaceAll('\n', '
') - .replaceAll(' ', '  ') - - return '\n' + - '\n' + - '\n' + - '\n' + - 'Error\n' + - '\n' + - '\n' + - '
' + body + '
\n' + - '\n' + - '\n' -} - -/** - * Module exports. - * @public - */ - -module.exports = finalhandler - -/** - * Create a function to handle the final response. - * - * @param {Request} req - * @param {Response} res - * @param {Object} [options] - * @return {Function} - * @public - */ - -function finalhandler (req, res, options) { - var opts = options || {} - - // get environment - var env = opts.env || process.env.NODE_ENV || 'development' - - // get error callback - var onerror = opts.onerror - - return function (err) { - var headers - var msg - var status - - // ignore 404 on in-flight response - if (!err && res.headersSent) { - debug('cannot 404 after headers sent') - return - } - - // unhandled error - if (err) { - // respect status code from error - status = getErrorStatusCode(err) - - if (status === undefined) { - // fallback to status code on response - status = getResponseStatusCode(res) - } else { - // respect headers from error - headers = getErrorHeaders(err) - } - - // get error message - msg = getErrorMessage(err, status, env) - } else { - // not found - status = 404 - msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req)) - } - - debug('default %s', status) - - // schedule onerror callback - if (err && onerror) { - setImmediate(onerror, err, req, res) - } - - // cannot actually respond - if (res.headersSent) { - debug('cannot %d after headers sent', status) - if (req.socket) { - req.socket.destroy() - } - return - } - - // send response - send(req, res, status, headers, msg) - } -} - -/** - * Get headers from Error object. - * - * @param {Error} err - * @return {object} - * @private - */ - -function getErrorHeaders (err) { - if (!err.headers || typeof err.headers !== 'object') { - return undefined - } - - return { ...err.headers } -} - -/** - * Get message from Error object, fallback to status message. - * - * @param {Error} err - * @param {number} status - * @param {string} env - * @return {string} - * @private - */ - -function getErrorMessage (err, status, env) { - var msg - - if (env !== 'production') { - // use err.stack, which typically includes err.message - msg = err.stack - - // fallback to err.toString() when possible - if (!msg && typeof err.toString === 'function') { - msg = err.toString() - } - } - - return msg || statuses.message[status] -} - -/** - * Get status code from Error object. - * - * @param {Error} err - * @return {number} - * @private - */ - -function getErrorStatusCode (err) { - // check err.status - if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) { - return err.status - } - - // check err.statusCode - if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) { - return err.statusCode - } - - return undefined -} - -/** - * Get resource name for the request. - * - * This is typically just the original pathname of the request - * but will fallback to "resource" is that cannot be determined. - * - * @param {IncomingMessage} req - * @return {string} - * @private - */ - -function getResourceName (req) { - try { - return parseUrl.original(req).pathname - } catch (e) { - return 'resource' - } -} - -/** - * Get status code from response. - * - * @param {OutgoingMessage} res - * @return {number} - * @private - */ - -function getResponseStatusCode (res) { - var status = res.statusCode - - // default status code to 500 if outside valid range - if (typeof status !== 'number' || status < 400 || status > 599) { - status = 500 - } - - return status -} - -/** - * Send response. - * - * @param {IncomingMessage} req - * @param {OutgoingMessage} res - * @param {number} status - * @param {object} headers - * @param {string} message - * @private - */ - -function send (req, res, status, headers, message) { - function write () { - // response body - var body = createHtmlDocument(message) - - // response status - res.statusCode = status - - if (req.httpVersionMajor < 2) { - res.statusMessage = statuses.message[status] - } - - // remove any content headers - res.removeHeader('Content-Encoding') - res.removeHeader('Content-Language') - res.removeHeader('Content-Range') - - // response headers - for (const [key, value] of Object.entries(headers ?? {})) { - res.setHeader(key, value) - } - - // security headers - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - - // standard headers - res.setHeader('Content-Type', 'text/html; charset=utf-8') - res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8')) - - if (req.method === 'HEAD') { - res.end() - return - } - - res.end(body, 'utf8') - } - - if (isFinished(req)) { - write() - return - } - - // unpipe everything from the request - req.unpipe() - - // flush the request - onFinished(req, write) - req.resume() -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/package.json deleted file mode 100644 index 992b306..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "finalhandler", - "description": "Node.js final http responder", - "version": "2.1.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "pillarjs/finalhandler", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "^11.0.1", - "nyc": "^17.1.0", - "supertest": "^7.0.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-inspect": "mocha --reporter spec --inspect --inspect-brk test/" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/HISTORY.md deleted file mode 100644 index fd3888a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/HISTORY.md +++ /dev/null @@ -1,80 +0,0 @@ -2.0.0 - 2024-09-04 -========== - * Drop support for Node.js <18 - -1.0.0 - 2024-09-04 -========== - - * Drop support for Node.js below 0.8 - * Fix: Ignore `If-Modified-Since` in the presence of `If-None-Match`, according to [spec](https://www.rfc-editor.org/rfc/rfc9110.html#section-13.1.3-5). Fixes [#35](https://github.com/jshttp/fresh/issues/35) - -0.5.2 / 2017-09-13 -================== - - * Fix regression matching multiple ETags in `If-None-Match` - * perf: improve `If-None-Match` token parsing - -0.5.1 / 2017-09-11 -================== - - * Fix handling of modified headers with invalid dates - * perf: improve ETag match loop - -0.5.0 / 2017-02-21 -================== - - * Fix incorrect result when `If-None-Match` has both `*` and ETags - * Fix weak `ETag` matching to match spec - * perf: delay reading header values until needed - * perf: skip checking modified time if ETag check failed - * perf: skip parsing `If-None-Match` when no `ETag` header - * perf: use `Date.parse` instead of `new Date` - -0.4.0 / 2017-02-05 -================== - - * Fix false detection of `no-cache` request directive - * perf: enable strict mode - * perf: hoist regular expressions - * perf: remove duplicate conditional - * perf: remove unnecessary boolean coercions - -0.3.0 / 2015-05-12 -================== - - * Add weak `ETag` matching support - -0.2.4 / 2014-09-07 -================== - - * Support Node.js 0.6 - -0.2.3 / 2014-09-07 -================== - - * Move repository to jshttp - -0.2.2 / 2014-02-19 -================== - - * Revert "Fix for blank page on Safari reload" - -0.2.1 / 2014-01-29 -================== - - * Fix for blank page on Safari reload - -0.2.0 / 2013-08-11 -================== - - * Return stale for `Cache-Control: no-cache` - -0.1.0 / 2012-06-15 -================== - - * Add `If-None-Match: *` support - -0.0.1 / 2012-06-10 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/LICENSE deleted file mode 100644 index 1434ade..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk -Copyright (c) 2016-2017 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/README.md deleted file mode 100644 index fd79c5b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# fresh - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -HTTP response freshness testing - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -``` -$ npm install fresh -``` - -## API - -```js -var fresh = require('fresh') -``` - -### fresh(reqHeaders, resHeaders) - -Check freshness of the response using request and response headers. - -When the response is still "fresh" in the client's cache `true` is -returned, otherwise `false` is returned to indicate that the client -cache is now stale and the full response should be sent. - -When a client sends the `Cache-Control: no-cache` request header to -indicate an end-to-end reload request, this module will return `false` -to make handling these requests transparent. - -## Known Issues - -This module is designed to only follow the HTTP specifications, not -to work-around all kinda of client bugs (especially since this module -typically does not receive enough information to understand what the -client actually is). - -There is a known issue that in certain versions of Safari, Safari -will incorrectly make a request that allows this module to validate -freshness of the resource even when Safari does not have a -representation of the resource in the cache. The module -[jumanji](https://www.npmjs.com/package/jumanji) can be used in -an Express application to work-around this issue and also provides -links to further reading on this Safari bug. - -## Example - -### API usage - - - -```js -var reqHeaders = { 'if-none-match': '"foo"' } -var resHeaders = { etag: '"bar"' } -fresh(reqHeaders, resHeaders) -// => false - -var reqHeaders = { 'if-none-match': '"foo"' } -var resHeaders = { etag: '"foo"' } -fresh(reqHeaders, resHeaders) -// => true -``` - -### Using with Node.js http server - -```js -var fresh = require('fresh') -var http = require('http') - -var server = http.createServer(function (req, res) { - // perform server logic - // ... including adding ETag / Last-Modified response headers - - if (isFresh(req, res)) { - // client has a fresh copy of resource - res.statusCode = 304 - res.end() - return - } - - // send the resource - res.statusCode = 200 - res.end('hello, world!') -}) - -function isFresh (req, res) { - return fresh(req.headers, { - etag: res.getHeader('ETag'), - 'last-modified': res.getHeader('Last-Modified') - }) -} - -server.listen(3000) -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://img.shields.io/github/workflow/status/jshttp/fresh/ci/master?label=ci -[ci-url]: https://github.com/jshttp/fresh/actions/workflows/ci.yml -[npm-image]: https://img.shields.io/npm/v/fresh.svg -[npm-url]: https://npmjs.org/package/fresh -[node-version-image]: https://img.shields.io/node/v/fresh.svg -[node-version-url]: https://nodejs.org/en/ -[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master -[downloads-image]: https://img.shields.io/npm/dm/fresh.svg -[downloads-url]: https://npmjs.org/package/fresh diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/index.js deleted file mode 100644 index fc3dea7..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/index.js +++ /dev/null @@ -1,136 +0,0 @@ -/*! - * fresh - * Copyright(c) 2012 TJ Holowaychuk - * Copyright(c) 2016-2017 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * RegExp to check for no-cache token in Cache-Control. - * @private - */ - -var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/ - -/** - * Module exports. - * @public - */ - -module.exports = fresh - -/** - * Check freshness of the response using request and response headers. - * - * @param {Object} reqHeaders - * @param {Object} resHeaders - * @return {Boolean} - * @public - */ - -function fresh (reqHeaders, resHeaders) { - // fields - var modifiedSince = reqHeaders['if-modified-since'] - var noneMatch = reqHeaders['if-none-match'] - - // unconditional request - if (!modifiedSince && !noneMatch) { - return false - } - - // Always return stale when Cache-Control: no-cache - // to support end-to-end reload requests - // https://tools.ietf.org/html/rfc2616#section-14.9.4 - var cacheControl = reqHeaders['cache-control'] - if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { - return false - } - - // if-none-match takes precedent over if-modified-since - if (noneMatch) { - if (noneMatch === '*') { - return true - } - var etag = resHeaders.etag - - if (!etag) { - return false - } - - var matches = parseTokenList(noneMatch) - for (var i = 0; i < matches.length; i++) { - var match = matches[i] - if (match === etag || match === 'W/' + etag || 'W/' + match === etag) { - return true - } - } - - return false - } - - // if-modified-since - if (modifiedSince) { - var lastModified = resHeaders['last-modified'] - var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)) - - if (modifiedStale) { - return false - } - } - - return true -} - -/** - * Parse an HTTP Date into a number. - * - * @param {string} date - * @private - */ - -function parseHttpDate (date) { - var timestamp = date && Date.parse(date) - - // istanbul ignore next: guard against date.js Date.parse patching - return typeof timestamp === 'number' - ? timestamp - : NaN -} - -/** - * Parse a HTTP token list. - * - * @param {string} str - * @private - */ - -function parseTokenList (str) { - var end = 0 - var list = [] - var start = 0 - - // gather tokens - for (var i = 0, len = str.length; i < len; i++) { - switch (str.charCodeAt(i)) { - case 0x20: /* */ - if (start === end) { - start = end = i + 1 - } - break - case 0x2c: /* , */ - list.push(str.substring(start, end)) - start = end = i + 1 - break - default: - end = i + 1 - break - } - } - - // final token - list.push(str.substring(start, end)) - - return list -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/package.json deleted file mode 100644 index 5d7e215..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/fresh/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "fresh", - "description": "HTTP response freshness testing", - "version": "2.0.0", - "author": "TJ Holowaychuk (http://tjholowaychuk.com)", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "keywords": [ - "fresh", - "http", - "conditional", - "cache" - ], - "repository": "jshttp/fresh", - "devDependencies": { - "beautify-benchmark": "0.2.4", - "benchmark": "2.1.4", - "eslint": "8.12.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.0.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.0", - "nyc": "15.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "bench": "node benchmark/index.js", - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.github/dependabot.yml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.github/dependabot.yml deleted file mode 100644 index e4a0e0a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - allow: - - dependency-type: production diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/Project.xml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/Project.xml deleted file mode 100644 index 3f2688c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/iconv-lite.iml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/iconv-lite.iml deleted file mode 100644 index 0c8867d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/iconv-lite.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 03d9549..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/modules.xml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/modules.xml deleted file mode 100644 index 5d24f2e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/vcs.xml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/Changelog.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/Changelog.md deleted file mode 100644 index 464549b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/Changelog.md +++ /dev/null @@ -1,212 +0,0 @@ -## 0.6.3 / 2021-05-23 - * Fix HKSCS encoding to prefer Big5 codes if both Big5 and HKSCS codes are possible (#264) - - -## 0.6.2 / 2020-07-08 - * Support Uint8Array-s decoding without conversion to Buffers, plus fix an edge case. - - -## 0.6.1 / 2020-06-28 - * Support Uint8Array-s directly when decoding (#246, by @gyzerok) - * Unify package.json version ranges to be strictly semver-compatible (#241) - * Fix minor issue in UTF-32 decoder's endianness detection code. - - -## 0.6.0 / 2020-06-08 - * Updated 'gb18030' encoding to :2005 edition (see https://github.com/whatwg/encoding/issues/22). - * Removed `iconv.extendNodeEncodings()` mechanism. It was deprecated 5 years ago and didn't work - in recent Node versions. - * Reworked Streaming API behavior in browser environments to fix #204. Streaming API will be - excluded by default in browser packs, saving ~100Kb bundle size, unless enabled explicitly using - `iconv.enableStreamingAPI(require('stream'))`. - * Updates to development environment & tests: - * Added ./test/webpack private package to test complex new use cases that need custom environment. - It's tested as a separate job in Travis CI. - * Updated generation code for the new EUC-KR index file format from Encoding Standard. - * Removed Buffer() constructor in tests (#197 by @gabrielschulhof). - - -## 0.5.2 / 2020-06-08 - * Added `iconv.getEncoder()` and `iconv.getDecoder()` methods to typescript definitions (#229). - * Fixed semver version to 6.1.2 to support Node 8.x (by @tanandara). - * Capped iconv version to 2.x as 3.x has dropped support for older Node versions. - * Switched from instanbul to c8 for code coverage. - - -## 0.5.1 / 2020-01-18 - - * Added cp720 encoding (#221, by @kr-deps) - * (minor) Changed Changelog.md formatting to use h2. - - -## 0.5.0 / 2019-06-26 - - * Added UTF-32 encoding, both little-endian and big-endian variants (UTF-32LE, UTF32-BE). If endianness - is not provided for decoding, it's deduced automatically from the stream using a heuristic similar to - what we use in UTF-16. (great work in #216 by @kshetline) - * Several minor updates to README (#217 by @oldj, plus some more) - * Added Node versions 10 and 12 to Travis test harness. - - -## 0.4.24 / 2018-08-22 - - * Added MIK encoding (#196, by @Ivan-Kalatchev) - - -## 0.4.23 / 2018-05-07 - - * Fix deprecation warning in Node v10 due to the last usage of `new Buffer` (#185, by @felixbuenemann) - * Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn) - - -## 0.4.22 / 2018-05-05 - - * Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson) - * Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson) - - -## 0.4.21 / 2018-04-06 - - * Fix encoding canonicalization (#156) - * Fix the paths in the "browser" field in package.json (#174 by @LMLB) - * Removed "contributors" section in package.json - see Git history instead. - - -## 0.4.20 / 2018-04-06 - - * Updated `new Buffer()` usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR) - - -## 0.4.19 / 2017-09-09 - - * Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147) - * Re-generated windows1255 codec, because it was updated in iconv project - * Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8 - - -## 0.4.18 / 2017-06-13 - - * Fixed CESU-8 regression in Node v8. - - -## 0.4.17 / 2017-04-22 - - * Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn) - - -## 0.4.16 / 2017-04-22 - - * Added support for React Native (#150) - * Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex) - * Fixed typo in Readme (#138 by @jiangzhuo) - * Fixed build for Node v6.10+ by making correct version comparison - * Added a warning if iconv-lite is loaded not as utf-8 (see #142) - - -## 0.4.15 / 2016-11-21 - - * Fixed typescript type definition (#137) - - -## 0.4.14 / 2016-11-20 - - * Preparation for v1.0 - * Added Node v6 and latest Node versions to Travis CI test rig - * Deprecated Node v0.8 support - * Typescript typings (@larssn) - * Fix encoding of Euro character in GB 18030 (inspired by @lygstate) - * Add ms prefix to dbcs windows encodings (@rokoroku) - - -## 0.4.13 / 2015-10-01 - - * Fix silly mistake in deprecation notice. - - -## 0.4.12 / 2015-09-26 - - * Node v4 support: - * Added CESU-8 decoding (#106) - * Added deprecation notice for `extendNodeEncodings` - * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) - - -## 0.4.11 / 2015-07-03 - - * Added CESU-8 encoding. - - -## 0.4.10 / 2015-05-26 - - * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not - just spaces. This should minimize the importance of "default" endianness. - - -## 0.4.9 / 2015-05-24 - - * Streamlined BOM handling: strip BOM by default, add BOM when encoding if - addBOM: true. Added docs to Readme. - * UTF16 now uses UTF16-LE by default. - * Fixed minor issue with big5 encoding. - * Added io.js testing on Travis; updated node-iconv version to test against. - Now we just skip testing SBCS encodings that node-iconv doesn't support. - * (internal refactoring) Updated codec interface to use classes. - * Use strict mode in all files. - - -## 0.4.8 / 2015-04-14 - - * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) - - -## 0.4.7 / 2015-02-05 - - * stop official support of Node.js v0.8. Should still work, but no guarantees. - reason: Packages needed for testing are hard to get on Travis CI. - * work in environment where Object.prototype is monkey patched with enumerable - props (#89). - - -## 0.4.6 / 2015-01-12 - - * fix rare aliases of single-byte encodings (thanks @mscdex) - * double the timeout for dbcs tests to make them less flaky on travis - - -## 0.4.5 / 2014-11-20 - - * fix windows-31j and x-sjis encoding support (@nleush) - * minor fix: undefined variable reference when internal error happens - - -## 0.4.4 / 2014-07-16 - - * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) - * fixed streaming base64 encoding - - -## 0.4.3 / 2014-06-14 - - * added encodings UTF-16BE and UTF-16 with BOM - - -## 0.4.2 / 2014-06-12 - - * don't throw exception if `extendNodeEncodings()` is called more than once - - -## 0.4.1 / 2014-06-11 - - * codepage 808 added - - -## 0.4.0 / 2014-06-10 - - * code is rewritten from scratch - * all widespread encodings are supported - * streaming interface added - * browserify compatibility added - * (optional) extend core primitive encodings to make usage even simpler - * moved from vows to mocha as the testing framework - - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/LICENSE deleted file mode 100644 index d518d83..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011 Alexander Shtuchkin - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/README.md deleted file mode 100644 index 3c97f87..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/README.md +++ /dev/null @@ -1,130 +0,0 @@ -## iconv-lite: Pure JS character encoding conversion - - * No need for native code compilation. Quick to install, works on Windows and in sandboxed environments like [Cloud9](http://c9.io). - * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), - [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. - * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). - * Intuitive encode/decode API, including Streaming support. - * In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). - * Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. - * React Native is supported (need to install `stream` module to enable Streaming API). - * License: MIT. - -[![NPM Stats](https://nodei.co/npm/iconv-lite.png)](https://npmjs.org/package/iconv-lite/) -[![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) -[![npm](https://img.shields.io/npm/v/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm downloads](https://img.shields.io/npm/dm/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm bundle size](https://img.shields.io/bundlephobia/min/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) - -## Usage -### Basic API -```javascript -var iconv = require('iconv-lite'); - -// Convert from an encoded buffer to a js string. -str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); - -// Convert from a js string to an encoded buffer. -buf = iconv.encode("Sample input string", 'win1251'); - -// Check if encoding is supported -iconv.encodingExists("us-ascii") -``` - -### Streaming API -```javascript - -// Decode stream (from binary data stream to js strings) -http.createServer(function(req, res) { - var converterStream = iconv.decodeStream('win1251'); - req.pipe(converterStream); - - converterStream.on('data', function(str) { - console.log(str); // Do something with decoded strings, chunk-by-chunk. - }); -}); - -// Convert encoding streaming example -fs.createReadStream('file-in-win1251.txt') - .pipe(iconv.decodeStream('win1251')) - .pipe(iconv.encodeStream('ucs2')) - .pipe(fs.createWriteStream('file-in-ucs2.txt')); - -// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. -http.createServer(function(req, res) { - req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { - assert(typeof body == 'string'); - console.log(body); // full request body string - }); -}); -``` - -## Supported encodings - - * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. - * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, - IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. - Aliases like 'latin1', 'us-ascii' also supported. - * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. - -See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). - -Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! - -Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! - - -## Encoding/decoding speed - -Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). -Note: your results may vary, so please always check on your hardware. - - operation iconv@2.1.4 iconv-lite@0.4.7 - ---------------------------------------------------------- - encode('win1251') ~96 Mb/s ~320 Mb/s - decode('win1251') ~95 Mb/s ~246 Mb/s - -## BOM handling - - * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options - (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). - A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. - * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. - * Encoding: No BOM added, unless overridden by `addBOM: true` option. - -## UTF-16 Encodings - -This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be -smart about endianness in the following ways: - * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be - overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. - -## UTF-32 Encodings - -This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. - * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) - -## Other notes - -When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). -Untranslatable characters are set to ïżœ or ?. No transliteration is currently supported. -Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77). - -## Testing - -```bash -$ git clone git@github.com:ashtuchkin/iconv-lite.git -$ cd iconv-lite -$ npm install -$ npm test - -$ # To view performance: -$ node test/performance.js - -$ # To view test coverage: -$ npm run coverage -$ open coverage/lcov-report/index.html -``` diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-codec.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-codec.js deleted file mode 100644 index fa83917..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-codec.js +++ /dev/null @@ -1,597 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec; - -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; - -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; - - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); - - // Load tables. - var mappingTable = codecOptions.table(); - - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 common decode nodes. - var commonThirdByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - var commonFourthByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - // Fill out the tree - var firstByteNode = this.decodeTables[0]; - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; - for (var j = 0x30; j <= 0x39; j++) { - if (secondByteNode[j] === UNASSIGNED) { - secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; - } else if (secondByteNode[j] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 2"); - } - - var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; - for (var k = 0x81; k <= 0xFE; k++) { - if (thirdByteNode[k] === UNASSIGNED) { - thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; - } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { - continue; - } else if (thirdByteNode[k] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 3"); - } - - var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; - for (var l = 0x30; l <= 0x39; l++) { - if (fourthByteNode[l] === UNASSIGNED) - fourthByteNode[l] = GB18030_CODE; - } - } - } - } - } - - this.defaultCharUnicode = iconv.defaultCharUnicode; - - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); -} - -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); - - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} - - -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); - } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; - } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); - } - - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } - } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; -} - -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - var hasValues = false; - var subNodeEmpty = {}; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; - - if (uCode >= 0) { - this._setEncodeChar(uCode, mbCode); - hasValues = true; - } else if (uCode <= NODE_START) { - var subNodeIdx = NODE_START - uCode; - if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). - var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. - if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) - hasValues = true; - else - subNodeEmpty[subNodeIdx] = true; - } - } else if (uCode <= SEQ_START) { - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); - hasValues = true; - } - } - return hasValues; -} - - - -// == Encoder ================================================================== - -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; -} - -DBCSEncoder.prototype.write = function(str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } - - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; - - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; - - } else if (resCode == undefined) { // Current character is not part of the sequence. - - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. - - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } - - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } - - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else if (dbcsCode < 0x1000000) { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } else { - newBuf[j++] = dbcsCode >>> 24; - newBuf[j++] = (dbcsCode >>> 16) & 0xFF; - newBuf[j++] = (dbcsCode >>> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } - - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); -} - -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. - - var newBuf = Buffer.alloc(10), j = 0; - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; - } - - return newBuf.slice(0, j); -} - -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; - - -// == Decoder ================================================================== - -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBytes = []; - - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; -} - -DBCSDecoder.prototype.write = function(buf) { - var newBuf = Buffer.alloc(buf.length*2), - nodeIdx = this.nodeIdx, - prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, - seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. - uCode; - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; - - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - uCode = this.defaultCharUnicode.charCodeAt(0); - i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. - } - else if (uCode === GB18030_CODE) { - if (i >= 3) { - var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); - } else { - var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + - (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + - (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + - (curByte-0x30); - } - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode >= 0x10000) { - uCode -= 0x10000; - var uCodeLead = 0xD800 | (uCode >> 10); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; - - uCode = 0xDC00 | (uCode & 0x3FF); - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - - // Reset trie node. - nodeIdx = 0; seqStart = i+1; - } - - this.nodeIdx = nodeIdx; - this.prevBytes = (seqStart >= 0) - ? Array.prototype.slice.call(buf, seqStart) - : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); - - return newBuf.slice(0, j).toString('ucs2'); -} - -DBCSDecoder.prototype.end = function() { - var ret = ''; - - // Try to parse all remaining chars. - while (this.prevBytes.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var bytesArr = this.prevBytes.slice(1); - - // Parse remaining as usual. - this.prevBytes = []; - this.nodeIdx = 0; - if (bytesArr.length > 0) - ret += this.write(bytesArr); - } - - this.prevBytes = []; - this.nodeIdx = 0; - return ret; -} - -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; - - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + ((r-l+1) >> 1); - if (table[mid] <= val) - l = mid; - else - r = mid; - } - return l; -} - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-data.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-data.js deleted file mode 100644 index 0d17e58..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/dbcs-data.js +++ /dev/null @@ -1,188 +0,0 @@ -"use strict"; - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + „ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'ms31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - 'ms932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', - - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - - - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', - - // Microsoft's CP936 is a subset and approximation of GBK. - 'windows936': 'cp936', - 'ms936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, - - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - 'isoir58': 'gbk', - - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - encodeSkipVals: [0x80], - encodeAdd: {'€': 0xA2E3}, - }, - - 'chinese': 'gb18030', - - - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - 'ms949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, - - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', - - - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - - 'windows950': 'cp950', - 'ms950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, - - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [ - // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of - // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. - 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, - 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, - 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, - 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, - 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, - - // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, - ], - }, - - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/index.js deleted file mode 100644 index d95c244..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/index.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf32"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; - -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/internal.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/internal.js deleted file mode 100644 index dc1074f..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/internal.js +++ /dev/null @@ -1,198 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Export Node.js internal encodings. - -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", - - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", - - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, - - // Codec. - _internal: InternalCodec, -}; - -//------------------------------------------------------------------------------ - -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; - - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; - - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== 'đŸ’©') { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; - } - } -} - -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; - -//------------------------------------------------------------------------------ - -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; - -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; - - -function InternalDecoder(options, codec) { - this.decoder = new StringDecoder(codec.enc); -} - -InternalDecoder.prototype.write = function(buf) { - if (!Buffer.isBuffer(buf)) { - buf = Buffer.from(buf); - } - - return this.decoder.write(buf); -} - -InternalDecoder.prototype.end = function() { - return this.decoder.end(); -} - - -//------------------------------------------------------------------------------ -// Encoder is mostly trivial - -function InternalEncoder(options, codec) { - this.enc = codec.enc; -} - -InternalEncoder.prototype.write = function(str) { - return Buffer.from(str, this.enc); -} - -InternalEncoder.prototype.end = function() { -} - - -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. - -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; -} - -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); - - return Buffer.from(str, "base64"); -} - -InternalEncoderBase64.prototype.end = function() { - return Buffer.from(this.prevStr, "base64"); -} - - -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. - -function InternalEncoderCesu8(options, codec) { -} - -InternalEncoderCesu8.prototype.write = function(str) { - var buf = Buffer.alloc(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - } - return buf.slice(0, bufIdx); -} - -InternalEncoderCesu8.prototype.end = function() { -} - -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ - -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; -} - -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } - - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; - } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} - -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-codec.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-codec.js deleted file mode 100644 index abac5ff..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-codec.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). - -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; - } - - this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); - - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; - - this.encodeBuf = encodeBuf; -} - -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; - - -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} - -SBCSEncoder.prototype.write = function(str) { - var buf = Buffer.alloc(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} - -SBCSEncoder.prototype.end = function() { -} - - -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} - -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = Buffer.alloc(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; - } - return newBuf.toString('ucs2'); -} - -SBCSDecoder.prototype.end = function() { -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data-generated.js deleted file mode 100644 index 9b48236..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data-generated.js +++ /dev/null @@ -1,451 +0,0 @@ -"use strict"; - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "â‚Źïżœïżœïżœïżœâ€Šïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœïżœïżœïżœïżœïżœïżœïżœÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šïżœâ€žâ€Šâ€ â€Ąïżœâ€°Ć â€čĆšĆ€ĆœĆčïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąĆĄâ€șĆ›Ć„ĆŸĆșÂ Ë‡Ë˜ĆÂ€Ä„ÂŠÂ§ÂšÂ©ĆžÂ«ÂŹÂ­ÂźĆ»Â°Â±Ë›Ć‚ÂŽÂ”Â¶Â·ÂžÄ…ĆŸÂ»ÄœËÄŸĆŒĆ”ĂĂ‚Ä‚Ă„ÄčÄ†Ă‡ÄŒĂ‰Ä˜Ă‹ÄšĂĂŽÄŽÄĆƒĆ‡Ă“Ă”ĆĂ–Ă—Ć˜ĆźĂšĆ°ĂœĂĆąĂŸĆ•ĂĄĂąÄƒĂ€ÄșÄ‡Ă§ÄĂ©Ä™Ă«Ä›Ă­ĂźÄÄ‘Ć„ĆˆĂłĂŽĆ‘Ă¶Ă·Ć™ĆŻĂșĆ±ĂŒĂœĆŁË™" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„
†‡€‰Љâ€čĐŠĐŒĐ‹ĐŃ’â€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąŃ™â€șŃšŃœŃ›ŃŸÂ ĐŽŃžĐˆÂ€ÒÂŠÂ§ĐÂ©Đ„Â«ÂŹÂ­ÂźĐ‡Â°Â±Đ†Ń–Ò‘Â”Â¶Â·Ń‘â„–Ń”Â»Ń˜Đ…Ń•Ń—ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čĆ’ïżœĆœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąĆĄâ€șĆ“ïżœĆŸĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€Ąïżœâ€°ïżœâ€čïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœïżœïżœïżœÂ Î…Î†ÂŁÂ€Â„ÂŠÂ§ÂšÂ©ïżœÂ«ÂŹÂ­Âźâ€•Â°Â±ÂČÂłÎ„Â”Â¶Â·ÎˆÎ‰ÎŠÂ»ÎŒÂœÎŽÎÎÎ‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄïżœÎŁÎ€Î„ÎŠÎ§ÎšÎ©ÎȘΫΏέΟίΰαÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏÏŽïżœ" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čĆ’ïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąĆĄâ€șĆ“ïżœïżœĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄžĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÄ°ĆžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻÄŸĂ±ĂČóÎÔö÷ÞĂčĂșĂ»ĂŒÄ±ĆŸĂż" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°ïżœâ€čïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąïżœâ€șïżœïżœïżœïżœÂ ÂĄÂąÂŁâ‚Ș„Чš©×«­Ÿ¯°±Âȳޔ¶·žÂčĂ·Â»ÂŒÂœÂŸÂżÖ°Ö±ÖČÖłÖŽÖ”Ö¶Ö·ÖžÖčÖșÖ»ÖŒÖœÖŸÖżŚ€ŚŚ‚ŚƒŚ°Ś±ŚČŚłŚŽïżœïżœïżœïżœïżœïżœïżœŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœïżœâ€Žâ€ïżœ" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "â‚ŹÙŸâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ùčâ€čĆ’Ú†Ú˜ÚˆÚŻâ€˜â€™â€œâ€â€ąâ€“â€”Ú©â„ąÚ‘â€șƓ‌‍ÚșÂ ŰŒÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÚŸÂ«ÂŹÂ­ÂźÂŻÂ°Â±Âȳޔ¶·žÂčŰ›Â»ÂŒÂœÂŸŰŸÛŰĄŰąŰŁŰ€Ű„ŰŠŰ§ŰšŰ©ŰȘ۫ۏۭ۟ۯ۰۱ŰČ۳ێ۔۶×۷۞ŰčŰșÙ€ÙÙ‚ÙƒĂ Ù„ĂąÙ…Ù†Ù‡ÙˆĂ§ĂšĂ©ĂȘĂ«Ù‰ÙŠĂźĂŻÙ‹ÙŒÙÙŽĂŽÙÙĂ·Ù‘ĂčÙ’Ă»ĂŒâ€Žâ€Û’" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šïżœâ€žâ€Šâ€ â€Ąïżœâ€°ïżœâ€čïżœÂšË‡Âžïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœÂŻË›ïżœÂ ïżœÂąÂŁÂ€ïżœÂŠÂ§Ă˜Â©Ć–Â«ÂŹÂ­ÂźĂ†Â°Â±Âȳޔ¶·ÞÂčĆ—Â»ÂŒÂœÂŸĂŠÄ„ÄźÄ€Ä†Ă„Ă…Ä˜Ä’ÄŒĂ‰ĆčĖĹĶÄȘÄ»Ć ĆƒĆ…Ă“ĆŒĂ•Ă–Ă—ĆČÁÚĆȘĂœĆ»ĆœĂŸÄ…ÄŻÄÄ‡Ă€Ă„Ä™Ä“ÄĂ©ĆșÄ—ÄŁÄ·Ä«ÄŒĆĄĆ„Ć†ĂłĆĂ”Ă¶Ă·ĆłĆ‚Ć›Ć«ĂŒĆŒĆŸË™" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°ïżœâ€čĆ’ïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąïżœâ€șĆ“ïżœïżœĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„Ë˜ĆÂ€ÄœĆšÂ§ÂšĆ ĆžĆ€ĆčÂ­ĆœĆ»Â°Ä…Ë›Ć‚ÂŽÄŸĆ›Ë‡ÂžĆĄĆŸĆ„ĆșËĆŸĆŒĆ”ĂĂ‚Ä‚Ă„ÄčÄ†Ă‡ÄŒĂ‰Ä˜Ă‹ÄšĂĂŽÄŽÄĆƒĆ‡Ă“Ă”ĆĂ–Ă—Ć˜ĆźĂšĆ°ĂœĂĆąĂŸĆ•ĂĄĂąÄƒĂ€ÄșÄ‡Ă§ÄĂ©Ä™Ă«Ä›Ă­ĂźÄÄ‘Ć„ĆˆĂłĂŽĆ‘Ă¶Ă·Ć™ĆŻĂșĆ±ĂŒĂœĆŁË™" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÄŠË˜ÂŁÂ€ïżœÄ€Â§ÂšÄ°ĆžÄžÄŽÂ­ïżœĆ»Â°Ä§ÂČÂłÂŽÂ”Ä„Â·ÂžÄ±ĆŸÄŸÄ”ÂœïżœĆŒĂ€ĂĂ‚ïżœĂ„ÄŠÄˆĂ‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂïżœĂ‘Ă’Ă“Ă”Ä Ă–Ă—ÄœĂ™ĂšĂ›ĂœĆŹĆœĂŸĂ ĂĄĂąïżœĂ€Ä‹Ä‰Ă§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻïżœĂ±ĂČĂłĂŽÄĄĂ¶Ă·ÄĂčĂșĂ»ĂŒĆ­ĆË™" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„ÄžĆ–Â€ÄšÄ»Â§ÂšĆ Ä’ÄąĆŠÂ­ĆœÂŻÂ°Ä…Ë›Ć—ÂŽÄ©ÄŒË‡ÂžĆĄÄ“ÄŁĆ§ĆŠĆŸĆ‹Ä€ĂĂ‚ĂƒĂ„Ă…Ă†ÄźÄŒĂ‰Ä˜Ă‹Ä–ĂĂŽÄȘÄĆ…ĆŒÄ¶Ă”Ă•Ă–Ă—Ă˜ĆČÚÛÜƹĆȘĂŸÄĂĄĂąĂŁĂ€Ă„ĂŠÄŻÄĂ©Ä™Ă«Ä—Ă­ĂźÄ«Ä‘Ć†ĆÄ·ĂŽĂ”Ă¶Ă·ĂžĆłĂșĂ»ĂŒĆ©Ć«Ë™" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ĐĐ‚ĐƒĐ„Đ…Đ†Đ‡ĐˆĐ‰ĐŠĐ‹ĐŒÂ­ĐŽĐĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ„–Ń‘Ń’Ń“Ń”Ń•Ń–Ń—Ń˜Ń™ŃšŃ›ŃœÂ§ŃžŃŸ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœïżœïżœÂ€ïżœïżœïżœïżœïżœïżœïżœŰŒÂ­ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœŰ›ïżœïżœïżœŰŸïżœŰĄŰąŰŁŰ€Ű„ŰŠŰ§ŰšŰ©ŰȘ۫ۏۭ۟ۯ۰۱ŰČ۳ێ۔۶۷۞ŰčŰșïżœïżœïżœïżœïżœÙ€ÙÙ‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠÙ‹ÙŒÙÙŽÙÙÙ‘Ù’ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ â€˜â€™ÂŁâ‚Źâ‚ŻÂŠÂ§ÂšÂ©ÍșÂ«ÂŹÂ­ïżœâ€•Â°Â±ÂČÂłÎ„Î…Î†Â·ÎˆÎ‰ÎŠÂ»ÎŒÂœÎŽÎÎÎ‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄïżœÎŁÎ€Î„ÎŠÎ§ÎšÎ©ÎȘΫΏέΟίΰαÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏÏŽïżœ" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©Ă—Â«ÂŹÂ­ÂźÂŻÂ°Â±Âȳޔ¶·žÂčĂ·Â»ÂŒÂœÂŸïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœâ€—ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœïżœâ€Žâ€ïżœ" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄžĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÄ°ĆžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻÄŸĂ±ĂČóÎÔö÷ÞĂčĂșĂ»ĂŒÄ±ĆŸĂż" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒıÄȘÄšÄ¶Â§Ä»ÄĆ ĆŠĆœÂ­ĆȘĆŠÂ°Ä…Ä“ÄŁÄ«Ä©Ä·Â·ÄŒÄ‘ĆĄĆ§ĆŸâ€•Ć«Ć‹Ä€ĂĂ‚ĂƒĂ„Ă…Ă†ÄźÄŒĂ‰Ä˜Ă‹Ä–ĂĂŽĂĂĆ…ĆŒĂ“Ă”Ă•Ă–ĆšĂ˜ĆČĂšĂ›ĂœĂĂžĂŸÄĂĄĂąĂŁĂ€Ă„ĂŠÄŻÄĂ©Ä™Ă«Ä—Ă­ĂźĂŻĂ°Ć†ĆĂłĂŽĂ”Ă¶Ć©ĂžĆłĂșĂ»ĂŒĂœĂŸÄž" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ â€ÂąÂŁÂ€â€žÂŠÂ§Ă˜Â©Ć–Â«ÂŹÂ­ÂźĂ†Â°Â±ÂČÂłâ€œÂ”Â¶Â·ĂžÂčĆ—Â»ÂŒÂœÂŸĂŠÄ„ÄźÄ€Ä†Ă„Ă…Ä˜Ä’ÄŒĂ‰ĆčĖĹĶÄȘÄ»Ć ĆƒĆ…Ă“ĆŒĂ•Ă–Ă—ĆČÁÚĆȘĂœĆ»ĆœĂŸÄ…ÄŻÄÄ‡Ă€Ă„Ä™Ä“ÄĂ©ĆșÄ—ÄŁÄ·Ä«ÄŒĆĄĆ„Ć†ĂłĆĂ”Ă¶Ă·ĆłĆ‚Ć›Ć«ĂŒĆŒĆŸâ€™" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ᾂᾃ£Ċċᾊ§áș€Â©áș‚áž‹á»Č­¼ƾᾞᾟĠġáč€áčÂ¶áč–áșáč—áșƒáč á»łáș„áș…áčĄĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĆŽĂ‘Ă’Ă“Ă”Ă•Ă–áčȘĂ˜Ă™ĂšĂ›ĂœĂĆ¶ĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïƔñĂČóÎÔöáč«ĂžĂčĂșĂ»ĂŒĂœĆ·Ăż" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁâ‚ŹÂ„Ć Â§ĆĄÂ©ÂȘ«­Ÿ¯°±ÂČÂłĆœÂ”Â¶Â·ĆŸÂčÂșÂ»Ć’Ć“ĆžÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„Ä…Ćâ‚Źâ€žĆ Â§ĆĄÂ©È˜Â«Ćč­ĆșĆ»Â°Â±ÄŒĆ‚Ćœâ€Â¶Â·ĆŸÄÈ™Â»Ć’Ć“ĆžĆŒĂ€ĂĂ‚Ä‚Ă„Ä†Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄĆƒĂ’Ă“Ă”ĆĂ–ĆšĆ°Ă™ĂšĂ›ĂœÄ˜ÈšĂŸĂ ĂĄĂąÄƒĂ€Ä‡ĂŠĂ§ĂšĂ©ĂȘëÏíßïđƄĂČóÎƑöƛƱĂčĂșĂ»ĂŒÄ™È›Ăż" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœÂąÂŁÂ„â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄÎŁÎ€Î„ÎŠÎ§ÎšÎ©Î±ÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏƒÏ‚Ï„Ï…Ï†Ï‡Ïˆâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ï‰ÎŹÎ­ÎźÏŠÎŻÏŒÏÏ‹ÏŽÎ†ÎˆÎ‰ÎŠÎŒÎŽÎÂ±â‰„â‰€ÎȘÎ«Ă·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "Ä†ĂŒĂ©ÄĂ€ÄŁĂ„Ä‡Ć‚Ä“Ć–Ć—Ä«ĆčĂ„Ă…Ă‰ĂŠĂ†ĆĂ¶ÄąÂąĆšĆ›Ă–ĂœĂžÂŁĂ˜Ă—Â€Ä€ÄȘĂłĆ»ĆŒĆșâ€ÂŠÂ©ÂźÂŹÂœÂŒĆÂ«Â»â–‘â–’â–“â”‚â”€Ä„ÄŒÄ˜Ä–â•Łâ•‘â•—â•ÄźĆ â”â””â”Žâ”Źâ”œâ”€â”ŒĆČĆȘâ•šâ•”â•©â•Šâ• â•â•ŹĆœÄ…ÄÄ™Ä—ÄŻĆĄĆłĆ«ĆŸâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ă“ĂŸĆŒĆƒĂ”Ă•Â”Ć„Ä¶Ä·Ä»ÄŒĆ†Ä’Ć…â€™Â­Â±â€œÂŸÂ¶Â§Ă·â€žÂ°âˆ™Â·ÂčÂłÂČ■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜Ă—Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ă°ĂĂŠĂ‹ĂˆÄ±ĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ĂŸĂžĂšĂ›Ă™ĂœĂÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€ĆŻÄ‡Ă§Ć‚Ă«ĆĆ‘ĂźĆčÄĆÉÄčÄșĂŽĂ¶ÄœÄŸĆšĆ›Ă–ĂœĆ€Ć„ĆĂ—ÄĂĄĂ­ĂłĂșÄ„Ä…ĆœĆŸÄ˜Ä™ÂŹĆșÄŒĆŸÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚ÄšĆžâ•Łâ•‘â•—â•Ć»ĆŒâ”â””â”Žâ”Źâ”œâ”€â”ŒÄ‚Äƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ä‘ÄÄŽĂ‹ÄĆ‡ĂĂŽÄ›â”˜â”Œâ–ˆâ–„ĆąĆźâ–€Ă“ĂŸĂ”ĆƒĆ„ĆˆĆ ĆĄĆ”ĂšĆ•Ć°ĂœĂĆŁÂŽÂ­ËË›Ë‡Ë˜Â§Ă·ÂžÂ°ÂšË™Ć±Ć˜Ć™â– Â " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюмъĐȘĐ°ĐĐ±Đ‘Ń†ĐŠĐŽĐ”Đ”Đ•Ń„Đ€ĐłĐ“Â«Â»â–‘â–’â–“â”‚â”€Ń…Đ„ĐžĐ˜â•Łâ•‘â•—â•ĐčĐ™â”â””â”Žâ”Źâ”œâ”€â”ŒĐșĐšâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Đ»Đ›ĐŒĐœĐœĐĐŸĐžĐżâ”˜â”Œâ–ˆâ–„ĐŸŃâ–€ĐŻŃ€Đ ŃĐĄŃ‚ĐąŃƒĐŁĐ¶Đ–ĐČĐ’ŃŒĐŹâ„–Â­Ń‹Đ«Đ·Đ—ŃˆĐšŃĐ­Ń‰Đ©Ń‡Đ§Â§â– Â " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœÂŁïżœĂ—ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœÂźÂŹÂœÂŒïżœÂ«Â»â–‘â–’â–“â”‚â”€ïżœïżœïżœÂ©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”Œïżœïżœâ•šâ•”â•©â•Šâ• â•â•ŹÂ€ïżœïżœïżœïżœïżœïżœïżœïżœïżœâ”˜â”Œâ–ˆâ–„ÂŠïżœâ–€ïżœïżœïżœïżœïżœïżœÂ”ïżœïżœïżœïżœïżœïżœïżœÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßıÄÅÉÊÆÎöĂČĂ»ĂčİÖÜþ£ØƞƟáíóĂșĂ±Ă‘ÄžÄŸÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€ÂșÂȘĂŠĂ‹ĂˆïżœĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ïżœĂ—ĂšĂ›Ă™ĂŹĂżÂŻÂŽÂ­Â±ïżœÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜Ă—Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ă°ĂĂŠĂ‹Ăˆâ‚ŹĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ĂŸĂžĂšĂ›Ă™ĂœĂÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂŁĂ ĂĂ§ĂȘĂŠĂšĂĂ”ĂŹĂƒĂ‚Ă‰Ă€ĂˆĂŽĂ”ĂČÚĂčÌÕܱ£Ù₧ÓáíóĂșñÑÂȘÂșÂżĂ’ÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘĂ«ĂšĂĂ°ĂžĂ„Ă…Ă‰ĂŠĂ†ĂŽĂ¶ĂŸĂ»ĂĂœĂ–ĂœĂžÂŁĂ˜â‚§Æ’ĂĄĂ­ĂłĂșĂĂĂ“ĂšÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘÂąÂŁÂ„â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ‚Ă Â¶Ă§ĂȘĂ«ĂšĂŻĂźâ€—Ă€Â§Ă‰ĂˆĂŠĂŽĂ‹ĂĂ»ĂčÂ€Ă”ĂœÂąÂŁĂ™Ă›Æ’ÂŠÂŽĂłĂșÂšÂžÂłÂŻĂŽâŒÂŹÂœÂŒÂŸÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$ÙȘ&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Â°Â·âˆ™âˆšâ–’â”€â”‚â”Œâ”€â”Źâ”œâ”Žâ”â”Œâ””â”˜ÎČâˆžÏ†Â±ÂœÂŒâ‰ˆÂ«Â»ï»·ï»žïżœïżœï»»ï»ŒïżœÂ Â­ïș‚£€ïș„ïżœïżœïșŽïșïș•ïș™ŰŒïșïșĄïș„Ù ÙĄÙąÙŁÙ€Ù„ÙŠÙ§ÙšÙ©ï»‘Ű›ïș±ïș”ïșč۟±ïș€ïșïșƒïș…ﻊïș‹ïșïș‘ïș“ïș—ïș›ïșŸïșŁïș§ïș©ïș«ïș­ïșŻïșłïș·ïș»ïșżï»ï»…ï»‹ï»ÂŠÂŹĂ·Ă—ï»‰Ù€ï»“ï»—ï»›ï»Ÿï»Łï»§ï»«ï»­ï»Żï»łïșœï»Œï»Žï»ï»ĄïčœÙ‘ï»„ï»©ï»Źï»°ï»Čï»ï»•ï»”ï»¶ï»ï»™ï»±â– ïżœ" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â€â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘Đ„Ń”Đ‡Ń—ĐŽŃžÂ°âˆ™Â·âˆšâ„–Â€â– Â " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœÎ†ïżœÂ·ÂŹÂŠâ€˜â€™Îˆâ€•Î‰ÎŠÎȘÎŒïżœïżœÎŽÎ«Â©ÎÂČÂłÎŹÂŁÎ­ÎźÎŻÏŠÎÏŒÏÎ‘Î’Î“Î”Î•Î–Î—ÂœÎ˜Î™Â«Â»â–‘â–’â–“â”‚â”€ÎšÎ›ÎœÎâ•Łâ•‘â•—â•ÎžÎŸâ”â””â”Žâ”Źâ”œâ”€â”ŒÎ ÎĄâ•šâ•”â•©â•Šâ• â•â•ŹÎŁÎ€Î„ÎŠÎ§ÎšÎ©Î±ÎČÎłâ”˜â”Œâ–ˆâ–„ÎŽÎ”â–€Î¶Î·ÎžÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏƒÏ‚Ï„Î„Â­Â±Ï…Ï†Ï‡Â§ÏˆÎ…Â°ÂšÏ‰Ï‹Î°ÏŽâ– Â " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘÂ«ÂŹÂ­Âźâ€ŸÂ°Â±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĆ Ă‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĆœĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïƥñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĆŸĂż" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ïșˆĂ—Ă·ïŁ¶ïŁ”ïŁŽïŁ·ïč±Âˆâ– â”‚─┐┌└┘ïččïč»ïčœïčżïč·ïșŠï»°ï»łï»Čﻎﻏﻐﻶﻞï»șﻌ ïŁșïŁčïŁžÂ€ïŁ»ïș‹ïș‘ïș—ïș›ïșŸïșŁŰŒÂ­ïș§ïșłÙ ÙĄÙąÙŁÙ€Ù„ÙŠÙ§ÙšÙ©ïș·Ű›ïș»ïșżï»ŠŰŸï»‹ŰĄŰąŰŁŰ€Ű„ۊۧۚ۩ŰȘ۫ۏۭ۟ۯ۰۱ŰČŰłŰŽŰ”Ű¶Ű·ï»‡ŰčŰșﻌïș‚ïș„ïșŽï»“Ù€ÙÙ‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠÙ‹ÙŒÙÙŽÙÙÙ‘Ù’ï»—ï»›ï»ŸïŁŒï»”ï»·ï»čï»»ï»Łï»§ï»Źï»©ïżœ" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ĐĐ‚ÒĐ„Đ…Đ†Đ‡ĐˆĐ‰ĐŠĐ‹ĐŒÂ­ĐŽĐĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ„–Ń‘Ń’Ò‘Ń”Ń•Ń–Ń—Ń˜Ń™ŃšŃ›ŃœÂ§ŃžŃŸ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘ÒÒ‘Đ„Ń”Đ†Ń–Đ‡Ń—Â·âˆšâ„–Â€â– Â " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§Ć“Â©ÂȘ«­Ÿ¯°±Âȳƞ”¶·ƒÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ àșàș‚àș„àș‡àșˆàșȘàșŠàșàș”àș•àș–àș—àș™àșšàș›àșœàșàșžàșŸàșĄàșąàșŁàș„àș§àș«àș­àșźïżœïżœïżœàșŻàș°àșČàșłàșŽàș”àș¶àș·àșžàșčàșŒàș±àș»àșœïżœïżœïżœà»€à»à»‚à»ƒà»„à»ˆà»‰à»Šà»‹à»Œà»à»†ïżœà»œà»â‚­ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœà»à»‘à»’à»“à»”à»•à»–à»—à»˜à»™ïżœïżœÂąÂŹÂŠïżœ" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœàčˆàžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșàč‰àčŠàč‹â‚Źàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ÂąÂŹÂŠÂ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "â‚ŹÂÂ‚ÂƒÂ„â€ŠÂ†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂâ€˜â€™â€œâ€â€ąâ€“â€”Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁâ‚ŹÂ„ÂŠÂ§Ć“Â©ÂȘ«­Ÿ¯°±Âȳƞ”¶·ƒÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźĆ â„ąÂŽÂšâ‰ ĆœĂ˜âˆžÂ±â‰€â‰„âˆ†Â”âˆ‚âˆ‘âˆĆĄâˆ«ÂȘÂșâ„ŠĆŸĂžÂżÂĄÂŹâˆšÆ’â‰ˆÄ†Â«ÄŒâ€ŠÂ Ă€ĂƒĂ•Ć’Ć“Äâ€”â€œâ€â€˜â€™Ă·â—ŠïżœÂ©â„Â€â€čâ€șĂ†Â»â€“Â·â€šâ€žâ€°Ă‚Ä‡ĂÄĂˆĂĂŽĂĂŒĂ“Ă”Ä‘Ă’ĂšĂ›Ă™Ä±Ë†ËœÂŻÏ€Ă‹ËšÂžĂŠĂŠË‡" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘĐ«ĐŹĐ­ĐźĐŻâ€ Â°ÂąÂŁÂ§â€ąÂ¶Đ†ÂźÂ©â„ąĐ‚Ń’â‰ ĐƒŃ“âˆžÂ±â‰€â‰„Ń–Â”âˆ‚ĐˆĐ„Ń”Đ‡Ń—Đ‰Ń™ĐŠŃšŃ˜Đ…ÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Đ‹Ń›ĐŒŃœŃ•â€“â€”â€œâ€â€˜â€™Ă·â€žĐŽŃžĐŃŸâ„–ĐŃ‘ŃĐ°Đ±ĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽÂ€" - }, - "macgreek": { - "type": "_sbcs", - "chars": "ÄÂčÂČĂ‰ÂłĂ–ĂœÎ…Ă ĂąĂ€Î„ÂšĂ§Ă©ĂšĂȘĂ«ÂŁâ„ąĂźĂŻâ€ąÂœâ€°ĂŽĂ¶ÂŠÂ­ĂčĂ»ĂŒâ€ Î“Î”Î˜Î›ÎžÎ ĂŸÂźÂ©ÎŁÎȘÂ§â‰ Â°Î‡Î‘Â±â‰€â‰„Â„Î’Î•Î–Î—Î™ÎšÎœÎŠÎ«ÎšÎ©ÎŹÎÂŹÎŸÎĄâ‰ˆÎ€Â«Â»â€ŠÂ Î„Î§Î†ÎˆĆ“â€“â€•â€œâ€â€˜â€™Ă·Î‰ÎŠÎŒÎŽÎ­ÎźÎŻÏŒÎÏÎ±ÎČÏˆÎŽÎ”Ï†ÎłÎ·ÎčΟÎșÎ»ÎŒÎœÎżÏ€ÏŽÏÏƒÏ„ÎžÏ‰Ï‚Ï‡Ï…Î¶ÏŠÏ‹ÎÎ°ïżœ" - }, - "maciceland": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒĂÂ°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€ĂĂ°ĂžĂŸĂœÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macroman": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șïŹïŹ‚â€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macromania": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ä‚ĆžâˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠÄƒĆŸÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șĆąĆŁâ€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macthai": { - "type": "_sbcs", - "chars": "Â«Â»â€ŠïąŒïąïą’ïą•ïą˜ïą‹ïąŽïą‘ïą”ïą—â€œâ€ïą™ïżœâ€ąïą„ïą‰ïą…ïą†ïą‡ïąˆïąŠïąïąïą“ïą–â€˜â€™ïżœÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșï»żâ€‹â€“â€”àžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčâ„ąàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™ÂźÂ©ïżœïżœïżœïżœ" - }, - "macturkish": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžÄžÄŸÄ°Ä±ĆžĆŸâ€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™ïżœË†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macukraine": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘĐ«ĐŹĐ­ĐźĐŻâ€ Â°ÒÂŁÂ§â€ąÂ¶Đ†ÂźÂ©â„ąĐ‚Ń’â‰ ĐƒŃ“âˆžÂ±â‰€â‰„Ń–Â”Ò‘ĐˆĐ„Ń”Đ‡Ń—Đ‰Ń™ĐŠŃšŃ˜Đ…ÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Đ‹Ń›ĐŒŃœŃ•â€“â€”â€œâ€â€˜â€™Ă·â€žĐŽŃžĐŃŸâ„–ĐŃ‘ŃĐ°Đ±ĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽÂ€" - }, - "koi8r": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘â•“â•”â••â•–â•—â•˜â•™â•šâ•›â•œâ•â•žâ•Ÿâ• â•ĄĐâ•ąâ•Łâ•€â•„â•Šâ•§â•šâ•©â•Ș╫╏©юабцЎДфгхОĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘Ń”â•”Ń–Ń—â•—â•˜â•™â•šâ•›Ò‘â•â•žâ•Ÿâ• â•ĄĐĐ„â•ŁĐ†Đ‡â•Šâ•§â•šâ•©â•ȘÒâ•ŹÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘Ń”â•”Ń–Ń—â•—â•˜â•™â•šâ•›Ò‘Ńžâ•žâ•Ÿâ• â•ĄĐĐ„â•ŁĐ†Đ‡â•Šâ•§â•šâ•©â•ȘÒĐŽÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "Ò›Ò“â€šÒ’â€žâ€Šâ€ â€Ąïżœâ€°Òłâ€čÒČÒ·Ò¶ïżœÒšâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœïżœïżœïżœïżœÓŻÓźŃ‘Â€ÓŁÂŠÂ§ïżœïżœïżœÂ«ÂŹÂ­ÂźïżœÂ°Â±ÂČĐïżœÓąÂ¶Â·ïżœâ„–ïżœÂ»ïżœïżœïżœÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœÖ‡Ö‰)(»«—.՝,-ÖŠâ€ŠŐœŐ›ŐžÔ±ŐĄÔČŐąÔłŐŁÔŽŐ€Ô”Ő„Ô¶ŐŠÔ·Ő§ÔžŐšÔčŐ©ÔșŐȘÔ»Ő«ÔŒŐŹÔœŐ­ÔŸŐźÔżŐŻŐ€Ő°ŐŐ±Ő‚ŐČŐƒŐłŐ„ŐŽŐ…Ő”Ő†Ő¶Ő‡Ő·ŐˆŐžŐ‰ŐčՊŐșŐ‹Ő»ŐŒŐŒŐŐœŐŽŐŸŐŐżŐÖ€Ő‘ÖŐ’Ö‚Ő“ÖƒŐ”Ö„Ő•Ö…Ő–Ö†Őšïżœ" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„
†‡€‰Љâ€čĐŠÒšÒșĐŃ’â€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąŃ™â€șŃšÒ›Ò»ŃŸÂ Ò°Ò±Ó˜Â€ÓšÂŠÂ§ĐÂ©Ò’Â«ÂŹÂ­ÂźÒźÂ°Â±Đ†Ń–Ó©Â”Â¶Â·Ń‘â„–Ò“Â»Ó™ÒąÒŁÒŻĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỀ\u0003á»Șỏở\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỚỰá»Čá»¶á»žĂá»Ž\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀáșąĂƒĂáș áș¶áșŹĂˆáșșáșŒĂ‰áșžá»†ĂŒá»ˆÄšĂá»ŠĂ’á»ŽĂ•Ă“á»Œá»˜á»œá»žá» á»šá»ąĂ™á»ŠĆšÂ Ä‚Ă‚ĂŠĂ”Æ ÆŻÄÄƒĂąĂȘĂŽÆĄÆ°Ä‘áș°Ì€Ì‰ÌƒÌÌŁĂ áșŁĂŁĂĄáșĄáșČáș±áșłáș”áșŻáșŽáșźáșŠáșšáșȘáș€á»€áș·áș§áș©áș«áș„áș­Ăšá»‚áș»áșœĂ©áșčềểễáșżá»‡ĂŹá»‰á»„áșŸá»’ĩíịĂČá»”á»Ă”Ăłá»á»“á»•á»—á»‘á»™á»á»Ÿá»Ąá»›á»ŁĂčá»–á»§Ć©ĂșỄừửữứựỳỷá»čĂœá»”á»" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "Â€Ââ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čƒŽ‘’“”‱–—˜ℱơâ€șĆ“ÂÂžĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżáƒáƒ‘áƒ’áƒ“áƒ”áƒ•áƒ–áƒ—áƒ˜áƒ™áƒšáƒ›áƒœáƒáƒžáƒŸáƒ áƒĄáƒąáƒŁáƒ€áƒ„áƒŠáƒ§áƒšáƒ©áƒȘძ჏ჭჟჯჰჱáƒČჳ჎ეჶçÚéĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "georgianps": { - "type": "_sbcs", - "chars": "Â€Ââ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čƒŽ‘’“”‱–—˜ℱơâ€șĆ“ÂÂžĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżáƒáƒ‘áƒ’áƒ“áƒ”áƒ•áƒ–áƒ±áƒ—áƒ˜áƒ™áƒšáƒ›áƒœáƒČáƒáƒžáƒŸáƒ áƒĄáƒąáƒłáƒŁáƒ€áƒ„áƒŠáƒ§áƒšáƒ©áƒȘძ჏ჭჟ჎ჯჰეÊçÚéĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "pt154": { - "type": "_sbcs", - "chars": "Ò–Ò’ÓźÒ“â€žâ€ŠÒ¶ÒźÒČÒŻÒ ÓąÒąÒšÒșÒžÒ—â€˜â€™â€œâ€â€ąâ€“â€”ÒłÒ·ÒĄÓŁÒŁÒ›Ò»ÒčÂ ĐŽŃžĐˆÓšÒ˜Ò°Â§ĐÂ©Ó˜Â«ÂŹÓŻÂźÒœÂ°Ò±Đ†Ń–Ò™Ó©Â¶Â·Ń‘â„–Ó™Â»Ń˜ÒȘÒ«ÒĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001áșČ\u0003\u0004áșŽáșȘ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013á»¶\u0015\u0016\u0017\u0018Ở\u001a\u001b\u001c\u001dỎ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~áș áșźáș°áș¶áș€áșŠáșšáșŹáșŒáșžáșŸá»€á»‚á»„á»†á»á»’á»”á»–á»˜á»ąá»šá»œá»žá»Šá»Žá»Œá»ˆá»ŠĆšá»€á»ČÕáșŻáș±áș·áș„áș§áș©áș­áșœáșčáșżá»á»ƒá»…ệốồổỗỠƠộờởịỰỚá»Șá»ŹÆĄá»›ÆŻĂ€ĂĂ‚ĂƒáșąÄ‚áșłáș”ÈÉÊáșșĂŒĂÄšá»łÄá»©Ă’Ă“Ă”áșĄá»·á»«á»­Ă™Ăšá»čá»”Ăá»ĄÆ°Ă ĂĄĂąĂŁáșŁÄƒá»Żáș«ĂšĂ©ĂȘáș»ĂŹĂ­Ä©á»‰Ä‘á»±ĂČĂłĂŽĂ”á»á»á»„ĂčĂșĆ©á»§Ăœá»Łá»ź" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#„%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‟ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[„]^_`abcdefghijklmnopqrstuvwxyz{|}‟ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "hproman8": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ă€Ă‚ĂˆĂŠĂ‹ĂŽĂÂŽË‹Ë†ÂšËœĂ™Ă›â‚€ÂŻĂĂœÂ°Ă‡Ă§Ă‘Ă±ÂĄÂżÂ€ÂŁÂ„Â§Æ’ÂąĂąĂȘÎûåéóĂșĂ ĂšĂČĂčĂ€Ă«Ă¶ĂŒĂ…ĂźĂ˜Ă†Ă„Ă­ĂžĂŠĂ„ĂŹĂ–ĂœĂ‰ĂŻĂŸĂ”ĂĂƒĂŁĂĂ°ĂĂŒĂ“Ă’Ă•Ă”Ć ĆĄĂšĆžĂżĂžĂŸÂ·Â”Â¶ÂŸâ€”ÂŒÂœÂȘÂșÂ«â– Â»Â±ïżœ" - }, - "macintosh": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șïŹïŹ‚â€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "ascii": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "tis620": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœàžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - } -} \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data.js deleted file mode 100644 index 066f904..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/sbcs-data.js +++ /dev/null @@ -1,179 +0,0 @@ -"use strict"; - -// Manually added data to be used by sbcs codec in addition to generated one. - -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "Ă„Ä€ÄĂ‰Ä„Ă–ĂœĂĄÄ…ÄŒĂ€ÄÄ†Ä‡Ă©ĆčĆșÄŽĂ­ÄÄ’Ä“Ä–ĂłÄ—ĂŽĂ¶Ă”ĂșÄšÄ›ĂŒâ€ Â°Ä˜ÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÄ™Âšâ‰ ÄŁÄźÄŻÄȘâ‰€â‰„Ä«Ä¶âˆ‚âˆ‘Ć‚Ä»ÄŒÄœÄŸÄčÄșĆ…Ć†ĆƒÂŹâˆšĆ„Ć‡âˆ†Â«Â»â€ŠÂ ĆˆĆĂ•Ć‘ĆŒâ€“â€”â€œâ€â€˜â€™Ă·â—ŠĆĆ”Ć•Ć˜â€čâ€șĆ™Ć–Ć—Ć â€šâ€žĆĄĆšĆ›ĂĆ€Ć„ĂĆœĆŸĆȘÓÔƫƟÚƯưƱĆČĆłĂĂœÄ·Ć»ĆĆŒÄąË‡" - }, - - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘Đ„Ń”Đ‡Ń—ĐŽŃžÂ°âˆ™Â·âˆšâ„–â‚Źâ– Â " - }, - - "mik": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ””â”Žâ”Źâ”œâ”€â”Œâ•Łâ•‘â•šâ•”â•©â•Šâ• â•â•Źâ”â–‘â–’â–“â”‚â”€â„–Â§â•—â•â”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - - "cp720": { - "type": "_sbcs", - "chars": "\x80\x81éù\x84Ă \x86çĂȘëÚïß\x8d\x8e\x8f\x90\u0651\u0652ĂŽÂ€Ù€Ă»Ăčۥ۹ۣۀ£ۄۊۧۚ۩ŰȘ۫ۏۭ۟ۯ۰۱ŰČŰłŰŽŰ”Â«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ű¶Ű·ŰžŰčŰșÙÂ”Ù‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠâ‰Ą\u064b\u064c\u064d\u064e\u064f\u0650â‰ˆÂ°âˆ™Â·âˆšâżÂČ■\u00a0" - }, - - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", - - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", - - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", - - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", - - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", - - "cp819": "iso88591", - "ibm819": "iso88591", - - "cyrillic": "iso88595", - - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", - - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", - - "hebrew": "iso88598", - "hebrew8": "iso88598", - - "turkish": "iso88599", - "turkish8": "iso88599", - - "thai": "iso885911", - "thai8": "iso885911", - - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", - - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", - - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", - - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", - - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", - - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", - - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", - - "strk10482002": "rk1048", - - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", - - "gb198880": "iso646cn", - "cn": "iso646cn", - - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", - - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", - - "mac": "macintosh", - "csmacintosh": "macintosh", -}; - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/big5-added.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/big5-added.json deleted file mode 100644 index 3c3d3c2..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/big5-added.json +++ /dev/null @@ -1,122 +0,0 @@ -[ -["8740","䏰ä°Čä˜ƒä–Šä•žđ§‰§ä”·ä–łđ§Č±äłąđ§ł…ăź•äœ¶ä„ä±‡ä±€đ€Šżđ٘—đ§’đŠș‹đ§ƒ’ä±—đȘ‘䝏䗚äȅ𧱏䎇äȘ€äšĄđŠŹŁçˆ„đ„©”đĄ©ŁđŁž†đŁœĄæ™ć›»"], -["8767","ç¶•ć€đšźčă·ŽéœŽđ§ŻŻćŻ›đĄ”žćȘ€ă˜„đ©ș°ć«‘ćź·ćłŒæźè–“đ©„…ç‘Ąç’ăĄ”đĄ”“đŁšžđŠ€Ąă»Ź"], -["87a1","đ„Łžă«”ç«ŒéŸ—đ€…Ąđš€đهȘđ ȘŠđىžäŒŠè’„éŸ–éŻä€°è˜“ćą–éŠéˆ˜ç§çšČæ™ æš©èąç‘ŒçŻ…æž‚çšŹć‰é†ă“Šç„đ„¶čç“†éż‡ćžłä€Żć‘Œä„±đŁšŽć ˜ç©Čđ§­„èźäšźđŠșˆä†đ„¶™çźźđą’Œéżˆđą“đą“‰đą“Œéż‰è”„đŁ–»ä‚ŽéżŠä“ĄđȘ·żæ‹çźéż‹"], -["8840","㇀",4,"đ „Œă‡…đ ƒ‘đ ƒă‡†ă‡‡đ ƒ‹đĄżšă‡ˆđ ƒŠă‡‰ă‡Šă‡‹ă‡Œđ „Žă‡ă‡ŽÄ€ĂÇĂ€Ä’Ă‰ÄšĂˆĆŒĂ“Ç‘Ă’àżżĂŠÌ„áșŸàżżĂŠÌŒá»€ĂŠÄĂĄÇŽĂ É‘Ä“Ă©Ä›ĂšÄ«Ă­ÇĂŹĆĂłÇ’ĂČĆ«ĂșǔĂčǖǘǚ"], -["88a1","ÇœĂŒàżżĂȘ̄áșżàżżĂȘ̌ềĂȘɡ⏚⏛"], -["8940","đȘŽ©đĄ……"], -["8943","攊"], -["8946","䞜滝锎釟"], -["894c","đ§œ”æ’‘äŒšäŒšäŸšć…–ć…Žć†œć‡€ćŠĄćŠšćŒ»ćŽć‘ć˜ć›ąćŁ°ć€„ć€‡ć€Čć€Žć­ŠćźžćźŸćȚćș†æ€»æ–‰æŸŸæ „æĄ„攎炌甔çș€çșŹçșș织经统猆猷è‰șè‹èŻè§†èźŸèŻąèœŠèœ§èœź"], -["89a1","ç‘çłŒç·æ„†ç«‰ćˆ§"], -["89ab","é†Œçąžé…žè‚Œ"], -["89b0","èŽ‹èƒ¶đ §§"], -["89b5","è‚Ÿé»‡äłé·‰éžŒä°Ÿđ©·¶đ§€ŽéžŠđȘ„łă—"], -["89c1","æșšèˆŸç”™"], -["89c5","䀑驏éȘéŸ™çŠ‡đš‘ŹđĄ·Šđ —đą«Šäž€äșäș€äș‡äșżä»«äŒ·ă‘ŒäŸœăčˆć€ƒć‚ˆă‘œă’“ă’„ć††ć€…ć‡›ć‡Œćˆ…äș‰ć‰čćŠćŒ§ă—‡ćŽ©ă•‘ćŽ°ă•“ć‚ćŁă•­ă•Č㚁撓撣撮ć’čć“ć“Żć”˜ć”Łć”šă–˜ć”żă–„ă–żć——ă—…"], -["8a40","𧶄攄"], -["8a43","đ ±‚đ Ž•đ„„«ć–đął†ă§Źđ èč†đ€¶žđ©“„ä“đš‚Ÿçș𱰾㹮䟕𹅝đЧČđ€·Șæ“đ ”Œđ ŸŽđ ł•đĄƒŽæ’èčŸđ ș–đ °‹đ œ€đąČ©đš‰–đ€““"], -["8a64","đ ”†đ©©đšƒ©äŸŽđ€ș§đął‚éȘČă©§đ©—Žăż­ă”†đ„‹‡đ©Ÿ”đ§Łˆđą”„é”źé •"], -["8a76","ä™đŠ‚„æ’Žć“Łđą”ŒđąŻŠđĄ·ă§»đĄŻ"], -["8aa1","𩛚𩜖𧩠æ“Șđ„’đ ±ƒèčšđą†Ąđš­Œđ œ±"], -["8aac","䠋𠆩ăżșćĄłđą¶"], -["8ab2","đ€—ˆđ “ŒđŠ‚—đ œŒđ ¶–ć•č䂻äŽș"], -["8abb","äȘŽđą©ŠđĄ‚è†ȘéŁ”đ ¶œæčă§Ÿđą”è·€ćšĄæ‘Œăčƒ"], -["8ac9","đȘ˜đ ž‰đą«đął‰"], -["8ace","𡃈𣧂㩒㹆𹊛㕾đ„č‰đąƒ‡ć™’đ Œ±đąČČđ©œ ă’Œæ°œđ€ž»"], -["8adf","𧕮đąș‹đąˆˆđȘ™›đšłđ čșđ °ŽđŠ œçŸ“đĄƒđą ƒđą€čă—»đ„‡Łđ șŒđ Ÿđ șȘăŸ“đ Œ°đ ”‡đĄ…đ čŒ"], -["8af6","đ ș«đ ź©đ ”ˆđĄƒ€đĄ„œăżč𱚖æČđ Ÿ­"], -["8b40","𣏮đ§˜čđąŻŽđ ”Ÿđ ”żđą±‘đą±•ăš˜đ ș˜đĄƒ‡đ ŒźđȘ˜ČđŠ­đšł’đš¶™đšłŠé–Șć“Œè‹„ć–č"], -["8b55","𩻃鰊éȘ¶đ§žđą·źç…€è…­èƒŹć°œđŠ•Čè„Žăž—ćŸđš‚œé†¶đ »ș𠾏đ č·đ »»ă—đ€·«ă˜‰đ ł–ćšŻđąž”đĄƒ‰đ žđ čžđĄžđĄ…ˆđšˆ‡đĄ‘•đ ččđ€čđą¶€ć©”đĄ€đĄ€žđĄƒ”đĄƒ¶ćžœđ ž‘"], -["8ba1","đ§š”đš‹đ Ÿ”đ č»đ„…Ÿăœƒđ Ÿ¶đĄ†€đ„‹˜đȘŠœđ€§šđĄ șđ€…·đš‰Œćą™ć‰šă˜šđ„œœçźČć­šä €äŹŹéŒ§ä§§é°Ÿéźđ„­ŽđŁ„œć—»ă—Čćš‰äžšć€‚đĄŻđŻĄžé‘đ ‚†äč›äș»ă”Ÿć°Łćœ‘ćż„ăŁș扌攔æ­șæ°”æ°șçŹçˆ«äžŹçŠ­đ€Ł©çœ’ç€»çłč眓đЉȘ㓁"], -["8bde","đŠ‹è€‚è‚€đŠ˜’đŠ„‘ćèĄ€è§đ§ąČèź èŽé’…é•žé•żé—šđšžéŸŠéĄ”éŁŽéŁžé„Łđ© é±ŒéžŸé»„æ­Żï€‡äž·đ ‚‡é˜æˆ·é’ą"], -["8c40","ć€»æ·Ÿđ©±łéŸŠă·‰èąđ€…Žç·ćł”äŹ đ„‡ă•™đ„Ž°æ„ąđššČ蟧釶熑朙çŽș𣊁đȘ„‡ăČ‹đĄŠ€äŹçŁ€ç‚ć†źđšœä€‰æ©ŁđȘŠșäˆŁè˜đ ©ŻçšȘ𩄇đš«Șé•çćŒ€đąŸéŽç›™đš§ŁéŸ§çŸäșŁäż°ć‚ŒäžŻäŒ—éŸšćŽç¶‹ćą’ćŁđĄ¶¶ćș’ćș™ćż‚đąœ’æ–‹"], -["8ca1","đŁčæ€™æ©ƒđٱٿłż"], -["8ca7","çˆ€đ€”…çŽŒă»›đ€š“ćŹ•ç’čèźƒđ„Č€đ„š•çȘ“çŻŹçłƒçčŹè‹žè–—éŸ©èąéŸȘèșčéŸ«èżè•Ÿé§ éˆĄéŸŹđš¶č𥐿䁱䊹暚"], -["8cc9","éĄšæ«ä‰¶ćœœ"], -["8cce","è—–đ€„»èŠżđ§„äČđŠ”Žć”»đŠŹ•đŠŸŸéŸ­éŸźćź–éŸŻæ›§ç蛿č—ç§Šă¶ˆä“ƒđى–𹞖䎚䔶"], -["8ce6","法𣬚è«č汞㎒𣕑攞éŸČç…—ä•˜đ€ƒŹđĄžŁä±·ă„žă‘Šđ †€đŠ±è«ŒäŸŽđ ˆčćŠżè…ŹéĄ–đ©ŁșćŒ»"], -["8d40","𠼟"], -["8d42","𹇁𚄭䄂䚻đ©čăŒ‡éŸłđȘ†”äƒžăŸ–ä›·đŠ±†ä…ŒđššČđ§żä•­ăŁ”đ„’šä•Ąä”›ä¶‰ä±»ä”¶ä—Șăżˆđ€Źă™Ąä“žä’œä‡­ćŽŸć”ˆć”–ă·Œă ć¶€ć¶čă  ă žćč‚ćșœćŒ„ćŸƒă€ˆă€”ă€żă„æƒ—æ„œćł„ăŠ‰æ†·æ†čæ‡ăŠžæˆŹæŠæ‹„æŒ˜ă§žćš±"], -["8da1","ăšƒæąæ»æ‡æ‘šă©‹æ“€ćŽ•ć˜ĄéŸŸăȘ—æ–†ăȘœæ—żæ™“ă«Čæš’ăŹąæœ–ă­‚æž€æ €ă­˜æĄŠæą„ă­Čă­±ă­»æ€‰æ„ƒç‰œæ„€æŠŸæŠ…ăźŒæ§–ăŻæ©„æ©Žæ©±æȘ‚㯏æȘ™ăŻČæȘ«æȘ”æ«”æ«¶æźæŻæŻȘæ±”æČȘăł‹æŽ‚æŽ†æŽŠæ¶ăłŻæ¶€æ¶±æž•æž˜æž©æș†đ𧀿ș»æ»ąæ»šéœżæ»šæ»©æŒ€æŒŽă”†đŁœæŸæŸŸă”Ș㔔熷ćČ™ă¶Šç€Źă¶‘çç”çŻçżç‚‰đ Œ„äă—±đ »˜"], -["8e40","đŁ»—ćžŸđŠ»“ç„Ÿđ„Ÿ ă™ŽæŠąđšŻ©ć­Žç©‰đ„ŁĄđ©“™ç©„ç©œđ„ŠŹçȘ»çȘ°ç«‚ç«ƒç‡‘đŠ’ä‡Šç«šç«ç«Ș䇯ć’Čđ„°çŹ‹ç­•çŹ©đ„ŒŽđ„łŸçźąç­ŻèŽœđ„źŽđŠ±żçŻèĄçź’çźžđ„Ž ă¶­đ„±„è’’çŻșç°†ç°”đ„łç±„çČƒđ€ą‚çČŠæ™œđ€•žçł‰çł‡çłŠç±Žçłłçł”çłŽ"], -["8ea1","çč§ä”đŠč„ç”đŠ»–ç’ç¶‰ç¶«ç„”ç¶łç·’đ€—đŠ€©ç·€ăŽ“ç·”đĄŸčç·„đš­çžđŠ„ĄđŠ…šçčźçș’äŒ«é‘Źçž§çœ€çœçœ‡ç€¶đŠ‹é§ĄçŸ—đŠ‘çŸŁđĄ™Ąđ šä•œđŁŠä”ƒđšŒșçżșđŠ’‰è€…è€ˆè€è€šè€ŻđȘ‚‡đŠłƒè€»è€ŒèĄđąœ”äŠ‰đŠ˜ŠđŁ·ŁđŠ›šæœ„è‚§đš©ˆè„‡è„šćą°đą›¶æ±żđŠ’˜đ€Ÿžæ“§đĄ’Šèˆ˜đĄĄžæ©“đ€©„đ€Ș•ä‘șèˆ©đ ŹđŠ©’đŁ”ŸäżčđĄ“œè“ąèąđŠŹŠđ€Š§đŁ”°đĄłđŁ·žèŠȘæ€›đŻŠ”ä‡›"], -["8f40","è•‹è‹èŒšđ ž–đĄžŽă›đŁ…œđŁ•šè‰»è‹ąèŒ˜đŁș‹đжŁđŠŹ…đŠź—đŁ—Žă¶żèŒć—ŹèŽ…ä”‹đж„èŽŹèè“ă‘ŸđŠ»”æ©—è•šă’–đŠč‚đą»Żè‘˜đ„Ż€è‘±ă·“ä“€æȘ§è‘ŠđŁČ”ç„˜è’šđŠź–đŠč·đŠčƒè“žèèŽ‘ä’ è’“è“€đ„Č‘ä‰€đ„ł€ä•ƒè”Žć«ČđŠș™ä”§è•łä”–æžżè˜–"], -["8fa1","đš˜„đš˜»è—đ§‚ˆè˜‚đĄ–‚đ§ƒđŻŠČä•Șè˜šă™ˆđĄąąć·đ§Žšè™Ÿè±đȘƒžèŸźđą°§èž±èŸšè ć™Ąè™ŹæĄ–ä˜èĄ…èĄ†đ§— đٶčđ§—€èĄžèąœä™›èąŽèą”æèŁ…ç·đ§œèŠ‡èŠŠèŠŠèŠ©èŠ§èŠŒđšš„è§§đ§€€đ§ȘœèȘœçž“釟èȘđ§©™ç«©đ§ŹșđŁŸäœ“đ§Źžç…ŒèŹŒèŹŸđ„°đ„•„èŹżè­Œè­èȘ©đ€©șèźèź›èȘŻđĄ›Ÿä˜•èĄèČ›đ§””đ§¶đŻ§”ăœ„đ§”“èł–đ§¶˜đ§¶œèŽ’èŽƒđĄ€èł›çœèŽ‘đ€ł‰ă»è”·"], -["9040","è¶©đš€‚đĄ€”đ€ŠŠă­Œđš†Œđ§„Œç«§èș­èș¶è»ƒé‹”èŒ™èŒ­đš„đš’èŸ„éŒƒđȘŠŸđ ©èŸłä€Șđš§žđš”œđŁ¶»ć»žđŁ‰ąèżčđȘ€”đššŒđš”đąŒ„ăŠ€đŠ»—é€·đš”Œđ§ȘŸéĄđš•Źđš˜‹é‚šđšœ“éƒ„đš›Šé‚źéƒœé…§ă«°é†©é‡„çȏ𚀳đĄș‰éˆŽæČŸé‰é‰ąđ„–čéŠč𚫆đŁČ›đšŹŒđ„—›"], -["90a1","đ Ž±éŒŹé«đš«ĄđšŻ«ç‚ć«ƒđš«ąđš«„ä„„é‰„đšŻŹđš°č𹯿鍳鑛èșŒé–…é–ŠéŠé– æż¶äŠčđą™șđš›˜đĄ‰ŒđŁžźä§Ÿæ°œé™»éš–ä…ŹéšŁđŠ»•æ‡šéš¶çŁ”đš« éšœćŒäŠĄđŠČžđ ‰ŽđАđ©‚Żđ©ƒ„đ€«‘đĄ€•đŁŒŠéœ±è™‚éœ¶äšä”œä–…đ€«©ç”ć­éœ›éœđ©‡•é—ć­Šđ©‡«éŸé„ćƒđŁ‚·đŁ‚Œéž‰éžŸéž±éžŸéŸ€éŸ’éŸ đ„‘ŹéŸźçœđ©łéŸżéŸ”đ©đ§„șä«‘é Žé łéĄ‹éĄŠăŹŽđ§…”ă”‘đ ˜°đ€…œ"], -["9140","đ„œ†éŁŠéą·éŁˆéŁ‡ä«żđŠŽ§đĄ›“ć–°éŁĄéŁŠéŁŹéžé€čđ€š©ä­Čđ©Ą—đ©€…é§”éšŒéš»éšé©˜đ„œ„ă›„đ©‚±đ©Ż•é« é«ąđ©Ź…é«Žä°ŽéŹ”éŹ­đš˜€ć€ŽéŹŽđŠŠšăŁƒđŁœé­é­€đ©ŽŸć©…đĄĄŁéźŽđ€‰‹é°‚éŻżé°Œđ©čšé·”đ©Ÿ·đȘ†’đȘ†«đȘƒĄđȘ„ŁđȘ‡Ÿé”Ÿé¶ƒđȘ„ŽéžŽæąˆ"], -["91a1","é·„đą…›đȘ†“đȘˆ đĄ€»đȘˆłéŽčđȘ‚čđȘŠŽéșéș•éșžéșąäŽŽéșȘéșŻđ€€é»ă­ ă§„㮝äŒČăžŸđš°«éŒ‚éŒˆäź–é€đŠ¶ąéŒ—éŒ–éŒčćšŸćšŠéœ…éŠžđ©‚‹éŸČè‘żéœąéœ©ç«œéŸŽçˆ–äźŸđ€„”đ€Š»ç…·đ€§žđ€ˆđ€©‘çŽžđšŻšđĄŁșçŠŸđš„Ÿđšž¶é©éłđš©„é‹ŹéŽé‹đš„Źđ€’čçˆ—ă»«çČç©ƒçƒđ€‘łđ€žç…ŸđĄŸŻç‚ŁđĄąŸđŁ–™ă»‡đĄą…đ„ŻđĄŸžăœąđĄ›»đĄ čă›ĄđĄŽđĄŁ‘đ„œ‹ăœŁđĄ›€ć›đ€š„đĄŸđĄŠš"], -["9240","đĄ†đĄ’¶è”ƒđŁšŠè”ƒè‘•đ€Š”đ§…„đŁž±đ„•œđŁ»»đ§’ä“ŽđŁ›źđ©ŠđŠŒŠæŸčăœłă°•ă·§ćĄŹđĄ€ąæ ä—đŁœżđ€ƒĄđ€‚‹đ€„đŠ°Ąć“‹ćšžđŠš±ćš’đ żŸđ źšđ žé†đšŹ“éŽœä»žć„«ă ™đ€¶äșŒđ ‘„đ żäœ‹äŸŠđ„™‘ć©šđ †«đ ‹ăŠ™đ ŒŠđ ”ă”äŒ©đ ‹€đšșłđ ‰”è«šđ ˆŒäș˜"], -["92a1","ćƒć„äŸąäŒƒđ€šŽđŁșŠäœ‚ć€źćŹć‚äżŒäż„ć˜ćƒŒć…™ć…›ć…ć…žæč¶đŁ–•đŁžčđŁșżæ”Č𡱄đŁș‰ć†šć‡ƒđ — ä“đ ’Łđ ’’đ ’‘è”șđšȘœđ œŽć‰™ćŠ€đ Ąłć‹Ąéźä™șç†Œđ€ŽŒđ ° đ€ŠŹđĄƒ€æ§‘đ žç‘čă»žç’™ç”ç‘–çŽ˜äźŽđ€ȘŒđ€‚ćă–„çˆđ€ƒ‰ć–Žđ …ć“đ Ż†ćœé‰é›ŽéŠćŸćžćżă˜ŸćŁ‹ćȘ™đš©†đĄ›șđĄŻđĄœćšŹćŠžéŠć©Ÿć«ćš’đ„„†đĄ§łđĄĄĄđ€Š•ă›”æŽ…ç‘ƒćšĄđ„șƒ"], -["9340","ćȘđšŻ—đ “é ç’ŒđĄŒƒç„…ä„Čéˆđš§»éŽœăž ć°žćȞćčžćčˆđĄŠ–đĄ„ŒđŁ«źć»ć­đĄ€ƒđĄ€„ăœđĄą ă›đĄ›Ÿă›“è„Ș𚩇đĄ¶șđŁ‘ČđšŠšćŒŒćŒŽđĄ€§đĄž«ć©«đĄœ»ć­„è˜”đ§—œèĄ æŸđąĄ đą˜«ćż›ășžđą–Żđą–Ÿđ©‚ˆđŠœłæ‡€đ €Ÿđ †đą˜›æ†™æ†˜æ”đąČ›đąŽ‡đ€›”đ©…"], -["93a1","æ‘±đ€™„đą­Ș㚩𹏹𣑐đ©ŁȘđąčžæŒ·đȘ‘›æ’¶æŒ±æ‘đ€§Łđą”§æŠ€đąČĄæ»æ•«æ„ČăŻŽđŁ‚ŽđŁŠ­đ€Š‰đŁŠ«ć”đŁ‹ đĄŁ™đ©żæ›ŽđŁŠ‰đŁ†łă« ä†đ„–„đšŹąđ„–đĄ›Œđ„•›đ„„çŁźđŁ„ƒđĄ ȘđŁˆŽă‘€đŁˆđŁ†‚đ€‹‰æšŽđŠŽ€æ™«äź“æ˜°đ§Ą°đĄ·«æ™ŁđŁ‹’đŁ‹Ąæ˜žđ„ĄČ㣑đŁ șđŁžŒăź™đŁžąđŁŸç“ăź–æžđ€˜Șæą¶æ žăŻ„æȘŸăĄŁđٟ•đ€’‡æšłæ©’æ«‰æŹ…đĄ€’æ”‘æą˜æ©ŒăŻ—æ©șæ­—đŁż€đŁČšéŽ é‹ČđšŻȘđš«‹"], -["9440","éŠ‰đš€žđš§œé‘§æ¶„æŒ‹đ€§Źæ”§đŁœżă¶æž„đ€€ŒćšœæžŠćĄ‡æŽ€çĄ‚ç„»đ€Œšđ€‰¶çƒ±ç‰çŠ‡çŠ”đ€žđ€œ„ć…čđ€Ș€đ —«ç‘șđŁ»žđŁ™Ÿđ€©Šđ€€—đ„żĄăŒ†ăș±đ€«Ÿđš°ŁđŁŒ”æ‚§ă»łç“ŒçŒéŽ‡ç·ä’ŸđŠ·Șä•‘ç–ƒăœŁđ€ł™đ€Ž†ăœ˜ç••ç™łđȘ—†ăŹ™ç‘šđš«Œđ€Š«đ€ŠŽă«»"], -["94a1","ă·đ€©Žă»żđ€§…đ€Łłé‡șćœČé‚đš«ŁđĄĄ€ćƒŸđ„ˆĄđ„‡§çžđوČçœŽçœç»đ€š—đŁžă©žđ€Ł°çžç’›ășżđ€Șșđ€«‡äƒˆđ€Ș–đІźéŒ‡đ„–ç žçąçąˆçŁ’çç„™đ§đ„›Łä„ŽçŠ›è’–çŠ„æš­đŁ»șçšș秮䅼𡛩ä„Čéˆ”ç§±đ ”Œđ€ŠŒđ Š™đٶșđĄźă–—ć•«ă•°ăšȘđ ‡”đ °ç«ąć©™đą›”đ„ȘŻđ„Șœćšđ ‰›çٰćšȘđ„Ż†ç«Ÿä‡čç±ç±­äˆ‘đ„źłđ„șŒđ„șŠçłđ€§č𡞰çČŽç±ŒçČźæȘČç·œçž‡ç·“çœŽđŠ‰Ą"], -["9540","đŠ…œđ§­ˆç¶—đ„ș‚ä‰ȘđŠ­”đ €–æŸ–đ ŽđŁ—ćŸ„đŠ’đŠžđ€„ąçżçŹ§đ  Źđ„«©đ„”ƒçŹŒđ„žŽé§Šè™…é©ŁæšœđŁżă§ąđ€§·đŠ–­éšŸđŠ– è’€đ§„§đŠł‘ä“Șè„·ä‚èƒ†è„‰è…‚đŠžŽéŁƒđŠ©‚è‰ąè‰„đŠ©‘è‘“đŠ¶§è˜đ§ˆ›ćȘ†ä…żđĄĄ€ćŹ«đĄąĄć«€đĄŁ˜èš đŻŠŒđŁ¶è ­đ§ąćš‚"], -["95a1","èĄźäœ…èą‡èążèŁŠè„„è„đ„šƒè„”đ§ž…đ§ž„đšŻ”đšŻ™đšźœđš§čăș­è’Łä›”䛏ăŸČèšœèšœđ©‘ˆćœéˆ«đ€Š„æ—”ç„©çƒ„đĄĄ…é”­èČŸèł©đ§·œćŠšçŸƒć§°äźă›”èžȘèș§đ€°‰èŒ°èœŠä‹Žæ±˜æŸ»đąŒĄäą›æœčæș‹đĄŸšéŻ©ăš”đ€€Żé‚»é‚—ć•±ä€†é†»é„đš©‹äąđš«Œé§đš°đš°»è“„èš«é–™é–§é–—é––đšŽŽç‘…ă»‚đ€Łżđ€©‚đ€Șă»§đŁˆ„éšđš»§đščŠđšč„ă»Œđ€§­đ€©žđŁżźç’ç‘«ă»Œéđ©‚°"], -["9640","æĄ‡äšđ©‚“đ„ŸŸééšđšŠ‰đš°ŠđšŹŻđŠŽŸéŠșćŹ‘è­©ä€Œçčđ€ˆ›éž›é±é€žđ ŒŠć·đšŻ…đ€ȘČé Ÿđ©“šé‹¶đ©——é‡„ä“€đš­đ€©§đš­€éŁœđš©…ăŒ€éˆȘä€„è”é€»é„đ§Ź†ă·œéŠ›ä­ŻéŠȘé©œđš­„đ„ŁˆæȘéšĄć«ŸéšŻđ©Ł±äźđ©„ˆéŠŒäźœäź—éœćĄČđĄŒ‚ć ąđ€Šž"], -["96a1","đĄ“šçĄ„đąœŸđŁ¶žæŁ…ă”œé‘˜ă€§æ…đąžđą„«æ„‡é±é±“é±»é°”é°é­żéŻđ©ž­éźŸđȘ‡”đȘƒŸéŽĄäČźđ€„„éž˜äȰ鮌đȘ†ŽđȘƒ­đȘƒłđ©€Żé¶„è’œđŠž’đŠżŸđŠź‚è—Œä”łđŠ¶€đŠș„đŠ·°è è—źđŠž€đٟ—đЁ€ç§ąđŁ–œđŁ™€ä€­đ€§žă”ąé›éŠŸéˆđ Šżçąčé‰·é‘äż€ă‘€é€đ„•ç œçĄ”çą¶çĄ‹đĄ—đŁ‡‰đ€„ăššäœČæżšæż™ç€žç€žć”đ€†”ćž»ćŁłćžŠéŽ–ćŸ—ç„Žă’Żđ€†Źç‡«đŠ±€đ€Ÿ—ćŹšđĄž”đš©‰"], -["9740","æ„Œć«Žćš‹äŠŒđ€’ˆăœŹä­»đš§ŒéŽ»éŽžđĄŁ–đ Œè‘Č𩳀𡐓đ€‹șđą°Šđ€ćŠ”đŁ¶·đŠç¶šđŠ…›đŠ‚€đ€Ščđ€Š‹đš§șé‹„çąă»©ç’Žđš­ŁđĄąŸă»Ąđ€Șłæ«˜çłç»ă»–đ€šŸđ€Ș”đĄŸ™đ€©Šđ Ž§đĄ€đ€§„ç‘ˆđ€€–ç‚„đ€„¶éŠ„çŠéŸđ “ŸéŒ±đš«Žđšš–éŽ†đšŻ§đ„—•ä€”đšȘ‚ç…«"], -["97a1","đ€„ƒđ łżćš€đ ˜šđ Ż«đ Čžć”‚ç§„đĄŸșç·ŸđĄ›‚đ€©đĄĄ’ä”źéăœŠđš«€đ€Š­ćŠ°đĄążđĄąƒđ§’„ćȘĄă›ąđŁ”›ăš°é‰Ÿć©čđšȘđĄĄąéŽăłđ ȘŽäȘ–ăŠŠćƒŽă”©ă”ŒđĄŽœç…”ä‹»đšˆ˜æžđ©ƒ€ä“«æ”—đ§čç§æČŻăł–đŁż­đŁž­æž‚æŒŒă”Żđ ”ç•‘ăšŒă“ˆäš€ă»šäĄ±ć§„é‰źä€Ÿèœđš°œđŠŻ€ć ’ćŸˆă›–đĄ‘’çƒŸđ€ąđ€©±đążŁđĄŠ°đąŽœæąčæ„§đĄŽ˜đŁ“„đ§ŻŽđŁ›ŸđšȘƒđٟ–đŁșđ€ČŸæššđٚ­đŠČ·èŸä“Ÿä“Ž"], -["9840","đŠŽŠđŠ”‘đŠČ‚đŠżžæŒ—đ§„‰èŒœđĄœș菭đŠČ€đ§“đĄŸ›ćЉćȘ‚đĄžłć©Ąć©±đĄ€…đ€‡Œăœ­ć§ŻđĄœŒă›‡ç†ŽéŽæššđ€Š„ć©źćš«đ€Š“æš«đŁ»čđ§œ¶đ€‘›đ€‹Šç„đ€‰™đš§ĄäŸ°đŠŽšćł‚đ€“Žđ§čđ€ŽœæšŒđ€‰–đĄŒ„ç‚Šç„łđ€©ă¶„æłŸđŻ „đ€©çč„ć§«ćŽŻă·łćœœđ€©đĄŸŸç¶€èŠ"], -["98a1","撅đŁ«șđŁŒ€đ ˆ”ćŸđ Ł•đ ˜™ăż„đĄŸžđȘŠ¶ç€ƒđ©…›ć”°çŽçł“đš©™đ© äżˆçż§ç‹çŒđ§«ŽçŒžçŒčđ„›¶ççˆăș©đ§Ź˜éŹç‡”đ€ŁČçĄè‡¶ă»ŠçœŒă»‘æČąć›œç™çžçŸă»ąă»°ă»Žă»șç““ăŒŽăœ“ç•‚ç•­ç•Čç–ăœŒç—ˆç—œăż€ç™ăż—ç™Žăżœç™șđ€œœç†ˆć˜ŁèŠ€ćĄ©ä€çƒä€čæĄä…ă—›çž˜äȘäŻć±žçžŸçŸ‹ćŁČ砘ç‚č砜䂹ç čçĄ‡çĄ‘çĄŠè‘ˆđ„””ç€łæ ƒç€Č䄃"], -["9940","䄉犑犙蟻皆蟌䅧çȘ‘ä†ČçȘŒè‰čä‡„ç«ç«›ä‡äžĄç­ąç­Źç­»ç°’ç°›ä‰ ä‰șç±»çȜ䊌çČžäŠ”çł­èŸ“çƒ€đ łç·ç·”ç·ç·œçŸźçŸŽçŠŸäŽ—è€ è€„çŹčè€źè€±è”ă·ŒćžŽç‚ è‚·èƒ©ä­è„ŒçŒȘ脎脒畠脔䐁ăŹč腖腙腚"], -["99a1","䐓ć șè…Œè†„ä„è†“ä­è†„ćŸŻè‡è‡€è‰”ä’èŠŠè‰¶è‹Šè‹˜è‹żä’°è—é™©æŠŠè…çƒ”è‘€æƒŁè’ˆä”„è’Ÿè“Ąè“žè”è”žè•’ä”»è•Żè•°è— ä•·è™Č蚒èšČè›Żé™…èž‹ä˜†ä˜—èąźèŁżè€€è„‡èŠ‘đ§„§èš©èšžèȘ”èȘŽè±‘èł”èłČèŽœäž˜ćĄŸè·ƒäŸ­ä»źèžș旘杔èč±ć—”èș°ä ·è»Žè»ąè»€è»­è»ČèŸ·èżèżŠèżŒé€łé§„äą­éŁ éˆ“ä€žéˆšé‰˜é‰«éŠ±éŠźéŠż"], -["9a40","é‹Łé‹«é‹łé‹Žé‹œéƒéŽ„éŽ­ä„…ä„‘éșżé—ćŒéé­éŸä„Ș鑔é‘čé”­é–ąäŠ§é—Žé˜łä§„æž äš€é€äš”éžČéŸ‚ć™”ä«€æƒšéąčäŹ™éŁ±ćĄ„é€Žé€™ć†Žé€œé€·é„‚é„é„ąä­°é§…äźéšŒéŹçȘƒé­©éźéŻéŻ±éŻŽä±­é° ăŻđĄŻ‚é”‰é°ș"], -["9aa1","é»Ÿć™é¶“é¶œé·€é·Œé“¶èŸ¶éč»éșŹéș±éșœé»†é“œé»ąé»±é»žç«ˆéœ„đ ‚”đ Š·đ Ž æ€šé“ƒćŠŹđ “—ćĄ€é“ăžčđ —•đ ˜•đ ™¶đĄšșć—ç…łđ «‚đ «đ źżć‘ȘđŻ »đ Ż‹ć’žđ Ż»đ °»đ ±“đ ±„đ ±Œæƒ§đ Čć™șđ Č”đ łđ ł­đ ”Żđ ¶Čđ ·ˆæ„•é°Żèž„đ ž„đ žŽđ »—đ Ÿđ Œ­đ čłć° đ ŸŒćž‹đĄœđĄđĄ¶æœžđĄ»đĄ‚ˆđĄ‚–ă™‡đĄ‚żđĄƒ“đĄ„ŻđĄ„»ć€è’­đĄ‹ŁđĄ”đĄŒ¶èźđĄ•·đĄ˜™đĄŸƒđĄŸ‡äčžç‚»đĄ ­đĄ„Ș"], -["9b40","𥚭𥩅đĄ°Ș𥱰đĄČŹđĄ»ˆæ‹ƒđĄ»•đĄŒ•ç†˜æĄ•đą…æ§©ă›ˆđą‰Œđą—đąșđąœȘđąĄ±đą„è‹œđą„§đąŠ“đą«•èŠ„đą«šèŸ đąŹŽéžžđąŹżéĄ‡éȘœđౌ"], -["9b62","đąČˆđąČ·đ„ŻšđąŽˆđąŽ’đą¶·đą¶•đąč‚đąœŽđążŒđŁ€łđŁŠđŁŒŸđŁžćŸ±æ™ˆæšżđ§©č𣕧𣗳爁đ€Šș矗𣘚𣜖çș‡đ †ćą”æœŽ"], -["9ba1","怘đŁȘ§đ§™—đ„żąđŁž‘đŁșčđ§—Ÿđą‚šäŁäȘžđ€„™đšȘšđ€‹źđ€Œđ€€»đ€ŒŽđ€Ž–đ€©…đ —Šć‡’đ ˜‘ćПđĄșšăźŸđŁłżđ€„đ€“–ćžˆđ€™ŽăŠ›đ€œŻđš—šđ©§‰ăąđą‡ƒè­žđš­Žé§–đ€ ’đ€Ł»đ€š•çˆ‰đ€«€đ ±žć„„đ€ș„đ€Ÿ†đ čè»šđ„€ŹćŠćœżç…±đ„Š™đ„™đŁœŠđ€Ș§ć–Œđ„‘†đ„‘źđŠ­’é‡”ă‘łđ„”żđ§˜Čđ„•žäœ˜đ„•ąđ„•Šđ„Ÿ‡đ€€żđ„ĄćŠă“»đŁŒæƒžđ„€ƒäŒđš„ˆđ„Șźđ„ź‰đ„°†đĄ¶ćžĄç…‘æŸ¶đŠ„‚đ§°’é–đІČđ€Ÿšè­ąđŠ‚đŠ‘Š"], -["9c40","ć”›đŠŻ·èŒ¶đŠ’„đĄ€œè«Șđ€§¶đŠ’ˆđŁżŻđŠ”’äŻ€đŠ–żđŠš”đąœ›é‘„đ„ŸĄæ†•ćš§đŻŁäŸ»ćščđ€”ĄđŠ›ŒäčȘđ€€Žé™–æ¶đŠČœă˜˜è„·đŠž™đŠĄźđА‘đŠĄžç‡ŸđŠŁ‡ç­‚đ©ƒ€đ š‘đŠ€Šé„„đŠ€č穅鷰đЧșéšŠđŠš­ă™ŸđŠ‘©đ €ĄçŠƒđŠšŽđŠ­›ćŽŹđŁ”™èđŠźä›đŠČ€ç”»èĄ„đŠ¶źćą¶"], -["9ca1","ăœœđą–đ§‹đ§‡ă±”đ§Š€đ§Š…éŠđą…șđ§Š‹éŒ°đ§‹Šđ€§æ°čé’Ÿđ§‘đ »žè §èŁ”đą€Šđš‘łđĄž±æșžđ€šȘ𥠠㊀ăščć°ç§Łä”żæš¶đ©Č­đ©ą€è„ƒđ§ŸŒđ§Ą˜ć›–äƒŸđĄ˜ŠăŠĄđŁœŻđšƒšđĄ…ç†­èŠđ§§đ©†šć©§äČ·đ§‚ŻđšŠ«đ§§œđ§šŠđ§Ź‹đ§”Šđ€…șç­ƒç„Ÿđš€‰æŸ”đȘ‹ŸæšƒđšŒ˜ćŽąđŠž‡éŽżæ ¶éđš…Żđš€ŁđŠŠ”đĄ­đŁˆŻđšˆć¶…đš°°đš‚ƒćœ•é Łđš„‰ć¶«đ€Šˆæ–Ÿæ§•ć’đ€Ș„đŁŸă°‘æœ¶đš‚đšƒŽđš„źđĄŸĄđš…"], -["9d40","𹆉𹆯𹈚𹌆𹌯𹎊㗊𹑹đššȘäŁșæŠđš„–ç ˆé‰•đšŠžäČđš§§äŸđš§šđš­†đšŻ”ć§žđš°‰èŒ‹đšż…đ©ƒŹç­‘đ©„đ©„Œă··đ©…žđ€«ŠèżçŠćš‹đ©“§đ©—©đ©–°đ©–žđ©œČ𩣑𩄉đ©„Șđ©§ƒđ©ššđ©ŹŽđ©”šđ©¶›çșŸđ©»žđ©ŒŁäȀ镇đȘŠ“ç†ąđȘ‹żä¶‘递đȘ—‹ä¶œđ ČœèŸŸć—"], -["9da1","èŸș𱒰èŸčđ€Ș“䔉çčżæœ–æȘ±ä»Șă“€đšŹŹđ§ąăœșèș€đĄŸ”đš€€đš­Źđšź™đ§šŸđŠšŻă·«đ§™•đŁČ·đ„˜”đ„„–äșšđ„șđЉ˜ćšżđ č­èžŽć­­đŁșˆđ€Čžæžæ‹đĄŸ¶đĄĄ»æ”°ć˜­đ„±Šćšđ„Œ‘ă·†đ©¶˜ä±œć˜ąć˜žçœ‰đ„»˜ć„”đŁ”€è°äžœđ żȘ𠔉đٚș脗锞莘瘻鱅癎çžč鍅ćČè…ˆè‹·ć˜„è„Č萘肜ć—Șç„ąć™ƒć–đ șă—Žć˜…ć—±æ›±đš‹ąă˜­ç”Žć—°ć–ș撗ć•Č𠱁đ Č–ć»đ„…ˆđ č¶đą±ą"], -["9e40","đ șąéș«ç”šć—žđĄ”æŠé­ć’”èłç‡¶é…¶æŒæŽčæŸć•©đą­ƒé±Čđąșłć†šă“Ÿđ ¶§ć†§ć‘ć”žć”“ç™Šèž­đŠąŠç–±è‚¶è „èž†èŁ‡è†¶èœđĄƒä“ŹçŒ„đ€œ†ćźèŒ‹đŠą“ć™»đą›Žđ§ŽŻđ€†Łđ§”łđŠ»đ§Š¶é…°đĄ‡™éˆˆđŁłŒđȘš©đ șŹđ »č物đĄČąäŽđ€ż‚đ§żčđ ż«äƒș"], -["9ea1","é±æ”Ÿđą¶ äŁłđ€Ÿ đ©”Œđ żŹđ žŠæąđ§–Łđ ż­"], -["9ead","𩁈𡆇熣çșŽé”äžšäž„ă•·ćŹæČČć§ăšŹă§œćœăš„đ€˜˜ćąšđ€­źèˆ­ć‘‹ćžȘđ„Ș•đ „č"], -["9ec5","ă©’đą‘„çŽđ©șŹäŽ‰éŻ­đŁłŸđ©Œ°ä±›đ€Ÿ©đ©–žđ©żžè‘œđŁ¶¶đ§ŠČđŠžłđŁœ æŒźçŽ„đŁ»·đŁžŹăšȘ逈拌ăčŽă™ș䗩𠒎癀櫰đ ș¶çĄșđ§Œźćą§ä‚żć™Œéź‹ć”Žç™”đȘŽéș…䳥ç—čăŸ»æ„™đŁƒšđ€Č"], -["9ef5","ć™đĄŠ©ćž§đ€„Łđ©ž†ćˆŽđ§‚źă–­æ±Šé”Œ"], -["9f40","籖éŹčćŸžđĄŹć±“æ““đ©“đŠŒ”đ§…€èš­đ ŽšđŠŽąđ€«ąđ ”±"], -["9f4f","ć‡ŸđĄŒć¶ŽéœƒđĄ·‘éșéŒçŹŸéŹ‚ćł‘çźŁæ‰šæŒ”é«żçŻéŹȘç±ŸéŹźç±‚çČ†é°•çŻŒéŹ‰éŒ—é°›đ€€Ÿéœšć•łćŻƒäżœéș˜äżČć‰ ăž†ć‹‘ć§ć–ćŠ·ćž’éŸˆé¶«èœœć‘©éžŽé„€éžșćŒŹæ„°"], -["9fa1","æ€Źćšé°ŠéŽ‚ä°»é™æŠ€ć‚Šç•†đĄ­é§šć‰ł"], -["9fae","酙隁酜"], -["9fb2","酑đšș—æżđŠŽŁæ«Šć˜‘é†Žç•șæŠ…đ Œçç±°đ„°ĄđŁłœ"], -["9fc1","đ€€™ç›–éźäžȘđ ł”èŽŸèĄ‚"], -["9fc9","ć±Šæ§€ćƒ­ćșćˆŸć·”ä»Žæ°±đ ‡ČäŒčć’œć“šćŠšè¶‚ă—ŸćŒŒă—ł"], -["9fdb","æ­’é…ŒéŸ„éź—é źéąŽéȘșéșšéș„ç…ș笔"], -["9fe7","æŻș蠘眞"], -["9feb","映đȘ™Šèč·éœ“"], -["9ff0","跔èčéžœèžæŠ‚đšœèžšèč”ç«“đ€©·çšŸçŁ˜æłȘ詧瘇"], -["a040","đš©šéŒŠæłŽèŸ–ç—ƒđȘŠČçĄ“đŻĄ€èŽŒç‹ąç±èŹ­çŒ‚ç“±èł«đ€Ș»è˜ŻćŸșèą ä’·"], -["a055","đĄ »đŠž…"], -["a058","è©Ÿđą”›"], -["a05b","æƒœç™§é«—é”„éźéźèŸ”"], -["a063","è èł·çŒŹéœĄéź°ă—–çŠČä°‡ç±‘é„ŠđŠ…™æ…™ä°„éș–æ…œ"], -["a073","ćŸæ…ŻæŠŠæˆčæ‹Žă©œæ‡ąćŽȘđŁ”æ€æ ‚ă—’"], -["a0a1","ć”—đšŻ‚èżšđšžč"], -["a0a6","ćƒ™đĄ”†ç€†ćŒČé˜žđ Œ»ä„"], -["a0ae","矟"], -["a0b0","çł‚đ„Œšçłšçš­èŠèŁç”ç”…ç“ČèŠ”èˆšæœŒèąđ§’†è›ç“°è„ƒçœ€èŠ‰đŠŸŒç•“đŠ»‘èž©èŸŽè‡ˆèžŒè©‰èČ­è­ƒçœ«ç“žè“šă˜”æŠČè¶Š"], -["a0d4","芩瑚æ¶čèŸđ€€‘ç“§ă·›ç…¶æ‚€æ†œăł‘ç…ąæ·"], -["a0e2","çœ±đšŹ­ç‰æƒ©ä­Ÿćˆ ă°˜đŁł‡đ„»—đ§™–đ„”±đĄ„„đĄ‹Ÿđ©€ƒđŠ·œđ§‚­ćłđŠ†­đššđŁ™·đ ƒźđŠĄ†đ€ŒŽä•ąćŹŸđŠŒéœéșŠđЉ«"], -["a3c0","␀",31,"␥"], -["c6a1","①",9,"⑮",9,"ⅰ",9,"äž¶äžżäș…äș ć†‚憖憫ć‹čćŒžć©ćŽ¶ć€Šćź€ć·›âŒłćčżć»ŽćœćœĄæ”Žæ— ç–’ç™¶èŸ”éš¶ÂšË†ăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒïŒ»ïŒœâœœă",23], -["c740","す",58,"ゥスィむ"], -["c7a1","ă‚„",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↾â†č㇏𠃌äčšđ ‚Šćˆ‚ä’‘"], -["c8a1","éŸ°ć†ˆéŸ±đ§˜‡"], -["c8cd","ïżąïż€ïŒ‡ïŒ‚ăˆ±â„–â„Ąă‚›ă‚œâș€âș„âș†âș‡âșˆâșŠâșŒâșâș•âșœâșâș„âș§âșȘâșŹâșźâș¶âșŒâșŸâ»†â»Šâ»Œâ»â»â»–⻗⻞⻣"], -["c8f5","ÊƒÉÉ›É”É”Ć“ĂžĆ‹ÊŠÉȘ"], -["f9fe","ïż­"], -["fa40","đ •‡é‹›đ —ŸđŁż…è•ŒäŠ”çŻć†”ă™‰đ€„‚đš§€é„đĄ§›è‹źđŁłˆç Œæ„æ‹Ÿđ€€łđšŠȘđ Š đŠźłđĄŒ…äŸ«đą“­ć€ˆđŠŽ©đ§Ș„đ٘€đ€Ș±đą”“ć€©đ ŸćŸ€đ Ž€đ ‡æ»›đ Ÿćœć„ă‘șć„ŽéĄŹăƒè–đ€Š€đ ’‡ć… đŁŽŽć…Șđ ŻżđąƒŒđ ‹„đą”°đ –ŽđŁˆłđĄŠƒćź‚èœđ –łđŁČ™ć†Č憾"], -["faa1","鮮應懏懑㳜懓đ€ȘŠć†łć‡ąć‚ć‡­èæ€Ÿđٜ­ćœ»ćˆ‹ćˆŠćˆŒćŠ”扗抔ćŠčć‹…ç°•è•‚ć‹ è˜đŠŹ“ćŒ…đš«žć•‰æ»™đŁŸ€đ „”đŁżŹćŒłć„đ Żąæł‹đĄœŠæ ›ç•æŠășȘăŁŒđĄ›šç‡ä’ąć­ćŽđšš«ćŸćżđĄ––đĄ˜“çŸŠćŽ“đšȘ›ćŽ ćŽ«ćŽźçŽ§đ„Čăœ™çŽœćć…æ±‰äč‰ćŸŸć™ăȘ«đ źć đŁż«đą¶Łć¶đ ±·ć“çčć”«æ™—æ”›ć‘­đŠ­“đ ”Žć•ć’ć’€äžŠđĄœđ »ă¶Žđ ”"], -["fb40","đšŠŒđąš˜ć•‡äł­ćŻç—ć–†ć–©ć˜…đĄŁ—đ€€șä•’đ€”æšłđĄ‚Žć˜·æ›đŁŠŠæš€æš­ć™ć™çŁ±ć›±éž‡ćŸćœ€ć›Żć›­đš­Šă˜ŁđĄ‰ć†đ€†„æ±źç‚‹ć‚ăš±đŠ±ŸćŸŠđĄ–ć ƒđĄ‘”đ€Łć Šđ€Ż”ćĄœćąȘă•ĄćŁ ćŁœđĄˆŒćŁ»ćŻżćƒđȘ…đ€‰žé“ă–Ąć€ŸæąŠă›ƒæč™"], -["fba1","đĄ˜Ÿćš€ć•“đĄš’è”…ć§‰đ ”ŽđŠČđŠŽȘđĄŸœć§™đĄŸ»đĄžČđŠ¶Šæ”±đĄ šđĄ›•ć§čđŠč…ćȘ«ć©Łă›Šđ€Š©ć©·ăœˆćȘ–ç‘„ć«“đŠŸĄđą•”ă¶…đĄ€‘ăœČ𡚾ćșƒć‹ć­¶æ–ˆć­Œđ§šŽä€„äĄđ ˆ„ćŻ•æ… đĄšŽđ„§Œđ –„ćŻłćźäŽć°…đĄ­„ć°“çŽć°”đĄČ„đŠŹšć±‰äŁćȅ泩泯涋đĄ·čđĄž·ćŽćŽ˜ć”†đĄș€ćČșć·—è‹Œă ­đ€€đą‰đą…łèŠ‡ă ¶ăŻ‚ćžźæȘŠćč”ćčșđ€’Œđ ł“ćŽŠäș·ć»ćŽšđĄ±ćž‰ć»Žđš’‚"], -["fc40","ć»čć»»ăą ć»Œæ Ÿé›ćŒđ ‡đŻą”ă«žäąźđĄŒșćŒșđŠąˆđąćœ˜đą‘±ćœŁéžœđŠčźćœČé€đšš¶ćŸ§ć¶¶ă”Ÿđ„‰đĄœȘđ§ƒžđą™šé‡–đ Šžđšš©æ€±æš…đĄĄ·ă„Łă·‡ă˜č析𹞎焱ă耿‚žæ‚€æ‚łđ€Š‚đ€Šđ§©“ç’€ćƒĄćȘ æ…€è€æ…‚đŻąŠđŠ»’æ†ć‡Žđ ™–æ†‡ćźȘđŁŸ·"], -["fca1","đąĄŸæ‡“đšźđ©„æ‡ă€ČđąŠ€đąŁæ€Łæ…œæ”žæŽ‹đ „˜æ‹…đĄ°æ‹•đąžæŹđ€§Ÿăš—æžæžđĄŽŽđĄŸŒæ’æŸŠđąž¶é ”đ€‚Œđ„œæ“Ąæ“„é‘»ă©Šæșă©—æ•æŒ–đ€ššđ€šŁæ–…æ•­æ•ŸđŁŸæ–”đ€„€äŹ·æ—‘äƒ˜đĄ ©æ— æ—ŁćżŸđŁ€æ˜˜đŁ‡·đŁ‡žæ™„đŁ†€đŁ†„æ™‹đ č”æ™§đ„‡Šæ™łæ™ŽđĄžœđŁˆ±đš—ŽđŁ‡ˆđ„Œ“çŸ…đąŁ·éŠ€æœ‚đ€Žœđ€šĄăŹ«æ§șđŁŸ‚æžæ§æąđ€‡đ©ƒ­æŸ—ä“©æ ąæčéˆŒæ đŁŠđж æĄ"], -["fd40","đŁ‘Żæ§Ąæš‹đš«Ÿæ„łæŁƒđŁ—æ€æ€€ăŽČăšđŁ˜Œăź€æžŹæ„Ąđš©Šä‹Œæ€¶æŠ˜ăźĄđ ‰èŁć‚æ§č𣙙đą„Șæ©…đŁœƒæȘăŻłæž±æ«ˆđ©†œă°æŹđ €ŁæƒžæŹ”æ­ŽđąŸæș”đŁ«›đ Ž”đĄ„˜ă€ćĄđŁ­šæŻĄđŁ»ŒæŻœæ°·đą’‹đ€Ł±đŠ­‘æ±šèˆŠæ±čđŁ¶Œä“…đŁ¶œđ€†€đ€€Œđ€€€"], -["fda1","𣳉㛄㳫đ ŽČ韃đهčđą’‘çŸæ ·đŠŽ„đŠ¶ĄđŠ·«æ¶–æ”œæčŒæŒ„đ€„żđ€‚…đŠčČè”łđŠœŽć‡‡æČœæžèźđšŹĄæžŻđŁžŻç‘“đŁŸ‚ç§ŒæčćȘ‘đف‹æżžăœæŸđŁž°æ»șđĄ’—đ€€œä••é°æœ„æœœă”ŽæœŽđ©…°ăŽ»æŸŸđ€…„æż“đ€‚‘đ€…•đ€€čđŁż°đŁŸŽđ€„żć‡Ÿđ€…–đ€…—đ€…€đŠ‡ç‹çŸç‚§ç‚çƒŒçƒ•çƒ–çƒŸä„„ă·šç†Žç†–đ€‰·ç„«ç……ćȘˆç…Šç…źćČœđ€„ç…éąđ€‹ç„Źđ€‘šđ€š§đ€šąç†șđšŻšç‚œçˆŽ"], -["fe40","é‘‚çˆ•ć€‘é‘ƒçˆ€éđ„˜…çˆźç‰€đ€„Žæąœç‰•ç‰—ăč•đف„栍挜犂çŒȘçŒ«đ€ Łđš «äŁ­đš „çŒšçŒźççŽȘđ °șđŠšźç‰ç‘‰đ€‡ąđĄ›§đ€š€æ˜Łă›…đ€Š·đ€Šđ€§»ç·ç•æ€ƒđ€šŠçčđ —ƒă»—ç‘œđąą­ç‘ đšșČ瑇珀瑶èŽčç‘Źăœ°ç‘Žé±æšŹç’‚ä„“đ€ȘŒ"], -["fea1","đ€…Ÿđ€©čđšźć­†đš°ƒđĄąžç“ˆđĄŠˆç”Žç“©ç”žđš»™đĄ©‹ćŻ—đšșŹéŽ…ç•ç•Šç•§ç•źđ€Ÿ‚ăŒ„đ€Ž“ç–Žç‘ç–žç–Žç˜‚ç˜Źç™‘ç™ç™Żç™¶đŠ”çšè‡ŻăŸžđŠ€‘đŠ€ŽçšĄçš„çš·ç›ŒđŠŸŸè‘ąđ„‚đ„…œđĄžœçœžçœŠç€æ’Żđ„ˆ ç˜đŁŠŹçžŻđš„€đš„šđĄ›çŸŽç ‰đĄ¶đ€š’æŁŠçąŻçŁ‡çŁ“éš„ç€źđ„— çŁ—ç€Žçą±đ§˜ŒèŸžèą„đšŹ«đŠ‚ƒđą˜œçŠ†è€€æ€‚çŠ€đ„Ą—çŠđ§Źč瀌犩æžȘ𧄩ășšç§†đ©„ç§”"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp936.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp936.json deleted file mode 100644 index 49ddb9a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp936.json +++ /dev/null @@ -1,264 +0,0 @@ -[ -["0","\u0000",127,"€"], -["8140","äž‚äž„äž…äž†äžäž’äž—äžŸäž äžĄäžŁäžŠäž©äžźäžŻäž±äžłäž”äž·äžŒäč€äčäč‚äč„äč†äčŠäč‘äč•äč—äčšäč›äčąäčŁäč€äč„äč§äčšäčȘ",5,"äčČäčŽ",9,"äčż",6,"äș‡äșŠ"], -["8180","äșäș–äș—äș™äșœäșäșžäșŁäșȘäșŻäș°äș±äșŽäș¶äș·äșžäșčäșŒäșœäșŸä»ˆä»Œä»ä»ä»’ä»šä»›ä»œä» ä»ąä»Šä»§ä»©ä»­ä»źä»Żä»±ä»Žä»žä»čä»ș仌仟䌀䌂",6,"䌋䌌䌒",4,"äŒœäŒäŒĄäŒŁäŒšäŒ©äŒŹäŒ­äŒźäŒ±äŒłäŒ”äŒ·äŒč䌻䌟",4,"䜄䜅䜇",5,"äœ’äœ”äœ–äœĄäœąäœŠäœšäœȘäœ«äœ­äœźäœ±äœČ䜔䜷䜞äœčäœșäœœäŸ€äŸäŸ‚äŸ…äŸ†äŸ‡äŸŠäŸŒäŸŽäŸäŸ’äŸ“äŸ•äŸ–äŸ˜äŸ™äŸšäŸœäŸžäŸŸäŸĄäŸą"], -["8240","䟀䟫䟭䟰",4,"䟶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俹俀俄俧俫俏俰äżČ俎俔俶俷äżčäż»äżŒäżœäżż",11], -["8280","ć€‹ć€Žć€ć€‘ć€“ć€•ć€–ć€—ć€›ć€ć€žć€ ć€ąć€Łć€€ć€§ć€«ć€Ż",10,"ć€»ć€œć€żć€ćć‚ć„ć…ć†ć‰ćŠć‹ćć",4,"恖恗恘恙恛恝",7,"恊",5,"恭",8,"恞ćčćșćŒćœć‚ć‚‚ć‚ƒć‚„ć‚†ć‚‡ć‚‰ć‚Šć‚‹ć‚Œć‚Ž",20,"悀悊ć‚Șć‚«ć‚­",4,"悳",6,"ć‚Œ"], -["8340","ć‚œ",17,"惐",5,"惗惘惙惛",10,"惚惩ćƒȘ惫惯惰惱ćƒČ惎惶",4,"ćƒŒ",9,"愈"], -["8380","愉愊愌",5,"愓",13,"愱",28,"慂慇慊慌慎慏慐慒慓慗慘慙慛慝",4,"慣慀慊慧慩ć…Ș慯ć…Čć…șć…Ÿć…żć†ƒć†„ć††ć†‡ć†Šć†‹ć†Žć†ć†ć†‘ć†“ć†”ć†˜ć†šć†ć†žć†Ÿć†Ąć†Łć†Š",4,"憭憼憮憾ć†čć†șć†Ÿć†żć‡ć‡‚ć‡ƒć‡…ć‡ˆć‡Šć‡ć‡Žć‡ć‡’",5], -["8440","ć‡˜ć‡™ć‡šć‡œć‡žć‡Ÿć‡ąć‡Łć‡„",5,"懏懟懱ć‡Čć‡Žć‡·ć‡Ÿćˆ„ćˆ…ćˆ‰ćˆ‹ćˆŒćˆćˆćˆ“ćˆ”ćˆ•ćˆœćˆžćˆŸćˆĄćˆąćˆŁćˆ„ćˆŠćˆ§ćˆȘ戏戯戱ćˆČćˆŽćˆ”ćˆŒćˆŸć‰„",5,"手扎扏扒打払扗托"], -["8480","ć‰™ć‰šć‰›ć‰ć‰Ÿć‰ ć‰ąć‰Łć‰€ć‰Šć‰šć‰«ć‰Źć‰­ć‰źć‰°ć‰±ć‰ł",9,"ć‰ŸćŠ€ćŠƒ",4,"抉",6,"抑抒抔",6,"ćŠœćŠ€ćŠ„ćŠŠćŠ§ćŠźćŠŻćŠ°ćŠŽ",9,"拀拁拂拄担拆拈拊拌拍拎拏拑拓拔拕拗拙",5,"拠拥拹拣拄",10,"拱",7,"ć‹»ć‹Œć‹œćŒćŒ‚ćŒƒćŒ„ćŒ‡ćŒ‰ćŒŠćŒ‹ćŒŒćŒŽ"], -["8540","ćŒ‘ćŒ’ćŒ“ćŒ”ćŒ˜ćŒ›ćŒœćŒžćŒŸćŒąćŒ€ćŒ„ćŒ§ćŒšćŒ©ćŒ«ćŒŹćŒ­ćŒŻ",9,"ćŒŒćŒœć€ć‚ć„ć†ć‹ćŒććć”ć˜ć™ć›ćć„ćšćȘ捬捭ćČć¶ćčć»ćŒćœćŸćŽ€ćŽćŽƒćŽ‡ćŽˆćŽŠćŽŽćŽ"], -["8580","掐",4,"ćŽ–ćŽ—ćŽ™ćŽ›ćŽœćŽžćŽ ćŽĄćŽ€ćŽ§ćŽȘ掫掏掭掯",6,"掷掞ćŽčćŽșćŽŒćŽœćŽŸć€ćƒ",4,"揎描提插揓揕揚揜揝揞握揱揧揮ćșćŸćżć€ć‚ć…ć‡ć‹ć”ć˜ć™ćšćœćąć€ć„ćȘ搰搳搶搷ćșćœćżć‘ć‘‚ć‘„ć‘…ć‘‡ć‘‰ć‘Œć‘ć‘Žć‘ć‘‘ć‘šć‘",4,"摣摄摧摩",7,"摮ć‘čć‘șć‘Ÿć‘żć’ć’ƒć’…ć’‡ć’ˆć’‰ć’Šć’ć’‘ć’“ć’—ć’˜ć’œć’žć’Ÿć’ ć’Ą"], -["8640","ć’ąć’„ć’źć’°ć’Č撔撶撷ć’čć’șć’Œć’Ÿć“ƒć“…ć“Šć“‹ć“–ć“˜ć“›ć“ ",4,"擫擏擯擰擱擎",5,"ć“»ć“Ÿć”€ć”‚ć”ƒć”„ć”…ć”ˆć”Š",4,"攒攓攕",5,"ć”œć”ć”žć”Ÿć”Ąć”„ć”Š"], -["8680","攚攩攫攭ć”Č攎攔收攞ć”čć”șć”»ć”œć•€ć•‚ć•…ć•‡ć•ˆć•‹",4,"救敒敓敔敗",4,"ć•ć•žć•Ÿć• ć•ąć•Łć•šć•©ć•«ć•Ż",5,"ć•čć•șć•œć•żć–…ć–†ć–Œć–ć–Žć–ć–’ć–“ć–•ć––ć–—ć–šć–›ć–žć– ",6,"方",8,"ć–Čć–Žć–¶ć–žć–șć–Œć–ż",4,"旆旇旈旊旋旎族旐旕旗",4,"旞无旹旧早旭旟旰旱旎时旞",4,"旿昂昃昄昅"], -["8740","昆昇昊昋昍昐",7,"ć˜™ć˜šć˜œć˜ć˜ ć˜Ąć˜ąć˜„ć˜Šć˜šć˜©ć˜Ș昫星是昰昳昔昷昞ć˜șć˜Œć˜œć˜Ÿć™€",11,"晏",4,"晕晖晚晛晝",4], -["8780","晣晄晊晧晭晟景晰ć™Č晳晎晔晷晞ć™čć™șć™œ",7,"暇",6,"暐暑暒暔",14,"㚀",10,"㚰",6,"暾ćščćšșćš»ćšœ",12,"曋",8,"ć›•ć›–ć›˜ć›™ć›œć›Łć›„",5,"曬曼曯ć›Čć›łć›¶ć›·ć›žć›»ć›Œćœ€ćœćœ‚ćœ…ćœ‡ćœ‹",6], -["8840","朒",9,"ćœćœžćœ ćœĄćœąćœ€ćœ„ćœŠćœ§ćœ«ćœ±ćœČ朮",4,"ćœŒćœœćœżććƒć„ć…ć†ćˆć‰ć‹ć’",4,"ć˜ć™ćąćŁć„ć§ćŹćźć°ć±ćČćŽć”ćžćčćșćœćŸćżćž€"], -["8880","极枇枈枉枊枍",4,"枔",6,"ćžœćžćžžćžŸćž„ćžšćžȘ枏枯枰枱枳枔架枷ćžč",8,"柄",6,"ćŸŒćŸćŸćŸ‘ćŸ“ćŸ–ćŸ—ćŸ›ćŸœćŸžćŸĄćŸąćŸŁćŸ„",7,"ćŸźćŸ°ćŸ±ćŸČćŸłćŸ”ćŸ¶ćŸ·ćŸ»ćŸŒćŸŸćŸżć ć ƒć „ć …ć ˆć ‰ć Šć Œć Žć ć ć ’ć “ć ”ć –ć —ć ˜ć šć ›ć œć ć Ÿć ąć Łć „",4,"ć «",4,"ć ±ć Čć łć Žć ¶",7], -["8940","ć Ÿ",5,"桅",6,"桎桏桐桒桓桕桖桗桙",4,"桟",5,"楊",4,"業",16,"桿求汄汆汇汈汊汋汌"], -["8980","汍",4,"汔",4,"汛汜汝池",7,"ćąȘ",17,"ćąœćąŸćążćŁ€ćŁ‚ćŁƒćŁ„ćŁ†",10,"棒棓棔棖",13,"棄",5,"棭棯棱ćŁČ棎棔棷棞ćŁș",7,"ć€ƒć€…ć€†ć€ˆ",4,"ć€Žć€ć€‘ć€’ć€“ć€—ć€˜ć€›ć€ć€žć€ ć€Ąć€ąć€Łć€Šć€šć€Źć€°ć€Č怳怔怶总"], -["8a40","ć€œć€Ÿć€żć„€ć„ƒć„…ć„†ć„Šć„Œć„ć„ć„’ć„“ć„™ć„›",4,"愥愣愀愊",12,"愔愷ć„șć„»ć„Œć„Ÿć„żćŠ€ćŠ…ćŠ‰ćŠ‹ćŠŒćŠŽćŠćŠćŠ‘ćŠ”ćŠ•ćŠ˜ćŠšćŠ›ćŠœćŠćŠŸćŠ ćŠĄćŠąćŠŠ"], -["8a80","抧抏抭抰抱抳",5,"ćŠșćŠŒćŠœćŠż",6,"槇槈槉槌槍槎槏槕槖槙槛槞",4,"槀槊槧槩ć§Șć§«ć§­",11,"ć§șć§Œć§œć§Ÿćš€ćš‚ćšŠćš‹ćšćšŽćšćšćš’ćš”ćš•ćš–ćš—ćš™ćššćš›ćšćšžćšĄćšąćš€ćšŠćš§ćššćšȘ",6,"暳暔暷",4,"ćšœćšŸćšżć©",4,"ć©‡ć©ˆć©‹",9,"ć©–ć©—ć©˜ć©™ć©›",5], -["8b40","橥橣橀橄橊橚橩橫",8,"橞ć©čć©»ć©Œć©œć©ŸćȘ€",17,"ćȘ“",6,"ćȘœ",13,"ćȘ«ćȘŹ"], -["8b80","ćȘ­",4,"ćȘŽćȘ¶ćȘ·ćȘč",4,"ćȘżć«€ć«ƒ",5,"ć«Šć«‹ć«",4,"ć«“ć«•ć«—ć«™ć«šć«›ć«ć«žć«Ÿć«ąć«€ć«„ć«§ć«šć«Ș櫏",4,"ć«Č",22,"權",11,"揘",25,"揳揔揶揞",7,"歁",6], -["8c40","歈",7,"ć­’ć­–ć­žć­ ć­Ąć­§ć­šć­«ć­­ć­źć­Żć­Čć­Žć­¶ć­·ć­žć­čć­»ć­Œć­Ÿć­żćź‚ćź†ćźŠćźćźŽćźćź‘ćź’ćź”ćź–ćźŸćź§ćźšćź©ćźŹćź­ćźźćźŻćź±ćźČćź·ćźșćź»ćźŒćŻ€ćŻćŻƒćŻˆćŻ‰ćŻŠćŻ‹ćŻćŻŽćŻ"], -["8c80","毑比",8,"毠毹毣毊毧毩",4,"毯毱",6,"ćŻœćŻŸć°€ć°‚ć°ƒć°…ć°‡ć°ˆć°‹ć°Œć°ć°Žć°ć°’ć°“ć°—ć°™ć°›ć°žć°Ÿć° ć°Ąć°Łć°Šć°šć°©ć°Șć°«ć°­ć°źć°Żć°°ć°Čć°łć°”ć°¶ć°·ć±ƒć±„ć±†ć±‡ć±Œć±ć±’ć±“ć±”ć±–ć±—ć±˜ć±šć±›ć±œć±ć±Ÿć±ąć±€ć±§",6,"ć±°ć±Č",6,"ć±»ć±Œć±œć±ŸćȀćȃ",4,"ćȉćȊćȋćȎćȏćȒćȓćȕćȝ",4,"ćČ€",4], -["8d40","ćČȘćČźćČŻćȰćČČćČŽćȶćČčćČșćČ»ćČŒćČŸćł€ćł‚ćłƒćł…",5,"泌",5,"泓",5,"泚",6,"泹泣泧泩泫泏泟泯泱",9,"ćłŒ",4], -["8d80","殁殄殅殈",5,"殏",4,"殕殗殘殙殚殜殝殟",4,"掄掚ćŽȘ掫掏掯",4,"掔",7,"掿",7,"ć”ˆć”‰ć”",10,"ć”™ć”šć”œć”ž",10,"ć”Ș攭攟攰攱ć”Č攳攔",12,"涃",21,"ć¶šć¶›ć¶œć¶žć¶Ÿć¶ "], -["8e40","ć¶Ą",21,"ć¶ž",12,"ć·†",6,"ć·Ž",12,"ć·œć·Ÿć· ć·Łć·€ć·Șć·Źć·­"], -["8e80","淰淔淶淞",4,"ć·żćž€ćž„ćž‡ćž‰ćžŠćž‹ćžćžŽćž’ćž“ćž—ćžž",7,"ćžš",4,"枯枰ćžČ",4,"ćžčćžșćžŸćžżćč€ćčćčƒćč†",5,"ćč",6,"ćč–",4,"ćčœćčćčŸćč ćčŁ",14,"ćč”ćč·ćččćčŸćșćș‚ćșƒćș…ćșˆćș‰ćșŒćșćșŽćș’ćș˜ćș›ćșćșĄćșąćșŁćș€ćșš",4,"ćșź",4,"ćșŽćșșćș»ćșŒćșœćșż",6], -["8f40","ć»†ć»‡ć»ˆć»‹",5,"ć»”ć»•ć»—ć»˜ć»™ć»šć»œ",11,"滩滫",8,"滔滞ć»čć»»ć»Œć»œćŒ…ćŒ†ćŒ‡ćŒ‰ćŒŒćŒćŒŽćŒćŒ’ćŒ”ćŒ–ćŒ™ćŒšćŒœćŒćŒžćŒĄćŒąćŒŁćŒ€"], -["8f80","ćŒšćŒ«ćŒŹćŒźćŒ°ćŒČ",6,"ćŒ»ćŒœćŒŸćŒżćœ",14,"ćœ‘ćœ”ćœ™ćœšćœ›ćœœćœžćœŸćœ ćœŁćœ„ćœ§ćœšćœ«ćœźćœŻćœČćœŽćœ”ćœ¶ćœžćœșćœœćœŸćœżćŸƒćŸ†ćŸćŸŽćŸćŸ‘ćŸ“ćŸ”ćŸ–ćŸšćŸ›ćŸćŸžćŸŸćŸ ćŸą",5,"ćŸ©ćŸ«ćŸŹćŸŻ",5,"ćŸ¶ćŸžćŸčćŸșćŸ»ćŸŸ",4,"ćż‡ćżˆćżŠćż‹ćżŽćż“ćż”ćż•ćżšćż›ćżœćżžćżŸćżąćżŁćż„ćżŠćżšćż©ćżŹćżŻćż°ćżČ濳濎濶濷ćżčćżșćżŒæ€‡"], -["9040","æ€ˆæ€‰æ€‹æ€Œæ€æ€‘æ€“æ€—æ€˜æ€šæ€žæ€Ÿæ€ąæ€Łæ€€æ€Źæ€­æ€źæ€°",4,"怶",4,"怜怟恀恄",6,"æŒæŽææ‘æ“æ”æ–æ—æ˜æ›æœæžæŸæ æĄæ„æŠæźæ±æČ恎恔恷恟悀"], -["9080","æ‚æ‚‚æ‚…æ‚†æ‚‡æ‚ˆæ‚Šæ‚‹æ‚Žæ‚æ‚æ‚‘æ‚“æ‚•æ‚—æ‚˜æ‚™æ‚œæ‚žæ‚Ąæ‚ąæ‚€æ‚„æ‚§æ‚©æ‚Șæ‚źæ‚°æ‚łæ‚”æ‚¶æ‚·æ‚čæ‚ș悜",7,"惇惈惉惌",4,"æƒ’æƒ“æƒ”æƒ–æƒ—æƒ™æƒ›æƒžæƒĄ",4,"æƒȘ惱æƒČ惔惷惞惻",4,"愂愃愄愅愇愊愋愌愐",4,"æ„–æ„—æ„˜æ„™æ„›æ„œæ„æ„žæ„Ąæ„ąæ„„æ„šæ„©æ„Șæ„Ź",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"æ…žæ…Ÿæ… æ…Ąæ…Łæ…€æ…„æ…Šæ…©",6,"慱æ…Čæ…łæ…Žæ…¶æ…ž",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"æ†Ș憫憭",9,"憞",5,"æ†żæ‡€æ‡æ‡ƒ",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"æˆ‡æˆ‰æˆ“æˆ”æˆ™æˆœæˆæˆžæˆ æˆŁæˆŠæˆ§æˆšæˆ©æˆ«æˆ­æˆŻæˆ°æˆ±æˆČ戔戶戞",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"所扄扚扱æ‰Č扎扔扷扞æ‰ș扻扜抁抂抃抅抆抇抈抋",5,"æŠ”æŠ™æŠœæŠæŠžæŠŁæŠŠæŠ§æŠ©æŠȘæŠ­æŠźæŠŻæŠ°æŠČæŠłæŠŽæŠ¶æŠ·æŠžæŠș抟拀拁"], -["9280","æ‹ƒæ‹‹æ‹æ‹‘æ‹•æ‹æ‹žæ‹ æ‹Ąæ‹€æ‹Ș拫拰æ‹Č拔拞æ‹čæ‹șæ‹»æŒ€æŒƒæŒ„æŒ…æŒ†æŒŠæŒ‹æŒŒæŒæŒæŒæŒ’æŒ“æŒ”æŒ•æŒ—æŒ˜æŒ™æŒœæŒŠæŒ§æŒ©æŒŹæŒ­æŒźæŒ°æŒ±æŒł",5,"æŒ»æŒŒæŒŸæŒżæ€ææ„æ‡æˆæŠæ‘æ’æ“æ”æ–",7,"捠捀捄捊捚æȘæ«æŹæŻæ°æČæłæŽæ”æžæčæŒæœæŸæżæŽæŽƒæŽ„æŽ…æŽ†æŽ‹æŽæŽ‘æŽ“æŽ”æŽ•æŽ—æŽ™",6,"æŽĄæŽ€æŽŠæŽ«æŽŻæŽ±æŽČ掔掶æŽčæŽ»æŽœæŽżæ€"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"æŸæąæ€",4,"æ«æŹæźæŻæ°æ±æłæ”æ·æčæș揻揌揟搃搄搆",4,"損搎搑搒搕",5,"ææŸæąæŁæ€"], -["9380","æ„æ§æšæ©æ«æź",5,"搔",4,"搻搌搟摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摚æ‘Șæ‘«æ‘Źæ‘ź",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"æ’„æ’Šæ’§æ’šæ’Șæ’«æ’Żæ’±æ’Čæ’łæ’Žæ’¶æ’čæ’»æ’œæ’Ÿæ’żæ“æ“ƒæ“„擆",6,"擏擑擓擔擕擖擙據"], -["9440","æ“›æ“œæ“æ“Ÿæ“ æ“Ąæ“Łæ“„æ“§",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","æ”ąæ”Łæ”€æ”Š",4,"æ”Źæ”­æ”°æ”±æ”Čæ”łæ”·æ”ș攌攜敀",4,"æ•†æ•‡æ•Šæ•‹æ•æ•Žæ•æ•’æ•“æ•”æ•—æ•˜æ•šæ•œæ•Ÿæ• æ•Ąæ•€æ•„æ•§æ•šæ•©æ•Șæ•­æ•źæ•Żæ•±æ•łæ•”æ•¶æ•ž",14,"æ–ˆæ–‰æ–Šæ–æ–Žæ–æ–’æ–”æ–•æ––æ–˜æ–šæ–æ–žæ– æ–ąæ–Łæ–Šæ–šæ–Șæ–Źæ–źæ–±",7,"æ–șæ–»æ–Ÿæ–żæ—€æ—‚æ—‡æ—ˆæ—‰æ—Šæ—æ—æ—‘æ—“æ—”æ—•æ—˜",7,"æ—Ąæ—Łæ—€æ—Ș旫"], -["9540","æ—Čæ—łæ—Žæ—”æ—žæ—č旻",4,"æ˜æ˜„æ˜…æ˜‡æ˜ˆæ˜‰æ˜‹æ˜æ˜æ˜‘æ˜’æ˜–æ˜—æ˜˜æ˜šæ˜›æ˜œæ˜žæ˜Ąæ˜ąæ˜Łæ˜€æ˜Šæ˜©æ˜Șæ˜«æ˜Źæ˜źæ˜°æ˜Čæ˜łæ˜·",4,"æ˜œæ˜żæ™€æ™‚æ™„",6,"晍晎晐晑晘"], -["9580","æ™™æ™›æ™œæ™æ™žæ™ æ™ąæ™Łæ™„æ™§æ™©",4,"晱æ™Čæ™łæ™”æ™žæ™čæ™»æ™Œæ™œæ™żæš€æšæšƒæš…æš†æšˆæš‰æšŠæš‹æšæšŽæšæšæš’æš“æš”æš•æš˜",4,"暞",8,"暩",4,"æšŻ",4,"暔暶暷暞æšșæš»æšŒæšœæšż",25,"曚曞",7,"曧曚æ›Ș",5,"曱曔曶曞æ›ș曻曜朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"æœ§æœ©æœźæœ°æœČæœłæœ¶æœ·æœžæœčæœ»æœŒæœŸæœżææ„æ…æ‡æŠæ‹ææ’æ”æ•æ—",4,"ææąæŁæ€æŠæ§æ«æŹæźæ±æŽæ¶"], -["9680","杞æčæșæ»æœæž€æž‚æžƒæž…æž†æžˆæžŠæžŒæžæžŽæžæž‘æž’æž“æž”æž–æž™æž›æžŸæž æžĄæž€æžŠæž©æžŹæžźæž±æžČ枎æžč",7,"柂柅",9,"æŸ•æŸ–æŸ—æŸ›æŸŸæŸĄæŸŁæŸ€æŸŠæŸ§æŸšæŸȘæŸ«æŸ­æŸźæŸČ柔",7,"柟栁栂栃栄栆栍栐栒栔栕栘",4,"æ žæ Ÿæ  æ ą",6,"æ «",6,"栎栔栶æ șæ »æ żæĄ‡æĄ‹æĄæĄæĄ’æĄ–",5], -["9740","æĄœæĄæĄžæĄŸæĄȘæĄŹ",7,"æĄ”æĄž",8,"æą‚æą„æą‡",7,"æąæą‘æą’æą”æą•æą–æą˜",9,"æąŁæą€æą„æą©æąȘæą«æąŹæąźæą±æąČæąŽæą¶æą·æąž"], -["9780","æąč",6,"æŁæŁƒ",5,"æŁŠæŁŒæŁŽæŁæŁæŁ‘æŁ“æŁ”æŁ–æŁ—æŁ™æŁ›",4,"æŁĄæŁąæŁ€",9,"æŁŻæŁČæŁłæŁŽæŁ¶æŁ·æŁžæŁ»æŁœæŁŸæŁżæ€€æ€‚æ€ƒæ€„æ€†",4,"怌怏怑怓",11,"æ€Ąæ€ąæ€Łæ€„",7,"æ€źæ€Żæ€±æ€Čæ€łæ€”æ€¶æ€·æ€žæ€ș总怌怟愀愁愃",16,"愕愖愘愙愛愜感"], -["9840","æ„Ąæ„ąæ„€æ„„æ„§æ„šæ„©æ„Șæ„Źæ„­æ„Żæ„°æ„Č",4,"æ„șæ„»æ„œæ„Ÿæ„żæŠæŠƒæŠ…æŠŠæŠ‹æŠŒæŠŽ",5,"抖抗抙抚抝",9,"抩æŠȘæŠŹæŠźæŠŻæŠ°æŠČæŠłæŠ”æŠ¶æŠžæŠčæŠș抌抜"], -["9880","æŠŸæŠżæ§€æ§‚",7,"構槍槏槑槒槓槕",5,"æ§œæ§æ§žæ§Ą",11,"æ§źæ§Żæ§°æ§±æ§ł",9,"槟暀",9,"æš‹",11,"æš™",5,"æš æšą",5,"æš©æš«æšŹæš­æšźæš°æšČæšłæšŽæš¶",6,"æšż",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"æ©ąæ©Łæ©€æ©Š",10,"æ©Č",6,"æ©șæ©»æ©œæ©Ÿæ©żæȘæȘ‚æȘƒæȘ…",8,"æȘæȘ’",4,"æȘ˜",7,"æȘĄ",5], -["9980","æȘ§æȘšæȘȘæȘ­",114,"æŹ„æŹŠæŹš",6], -["9a40","æŹŻæŹ°æŹ±æŹłæŹŽæŹ”æŹ¶æŹžæŹ»æŹŒæŹœæŹżæ­€æ­æ­‚æ­„æ­…æ­ˆæ­Šæ­‹æ­",11,"歚",7,"æ­šæ­©æ­«",13,"æ­șæ­œæ­Ÿæ­żæź€æź…æźˆ"], -["9a80","æźŒæźŽæźæźæź‘æź”æź•æź—æź˜æź™æźœ",4,"æźą",7,"æź«",7,"æź¶æźž",6,"æŻ€æŻƒæŻ„æŻ†",4,"æŻŒæŻŽæŻæŻ‘æŻ˜æŻšæŻœ",4,"æŻą",7,"æŻŹæŻ­æŻźæŻ°æŻ±æŻČæŻŽæŻ¶æŻ·æŻžæŻșæŻ»æŻŒæŻŸ",6,"氈",4,"æ°Žæ°’æ°—æ°œæ°æ°žæ° æ°Łæ°„æ°«æ°Źæ°­æ°±æ°łæ°¶æ°·æ°čæ°șæ°»æ°Œæ°Ÿæ°żæ±ƒæ±„æ±…æ±ˆæ±‹",4,"汑汒汓汖汘"], -["9b40","æ±™æ±šæ±ąæ±Łæ±„æ±Šæ±§æ±«",4,"æ±±æ±łæ±”æ±·æ±žæ±șæ±»æ±Œæ±żæČ€æČ„æČ‡æČпȋæČæČ޿ȑæČ’æČ•æČ–æČ—æČ˜æČšæČœæČæČžæČ æČąæČšæČŹæČŻæČ°æČ޿ȔæČ¶æČ·æČșæł€æłæł‚æłƒæł†æł‡æłˆæł‹æłæłŽæłæł‘æł’æł˜"], -["9b80","æł™æłšæłœæłæłŸæł€æłŠæł§æł©æłŹæł­æłČæłŽæłčæłżæŽ€æŽ‚æŽƒæŽ…æŽ†æŽˆæŽ‰æŽŠæŽæŽæŽæŽ‘æŽ“æŽ”æŽ•æŽ–æŽ˜æŽœæŽæŽŸ",5,"æŽŠæŽšæŽ©æŽŹæŽ­æŽŻæŽ°æŽŽæŽ¶æŽ·æŽžæŽșæŽżæ”€æ”‚æ”„æ”‰æ”Œæ”æ”•æ”–æ”—æ”˜æ”›æ”æ”Ÿæ”Ąæ”ąæ”€æ”„æ”§æ”šæ”«æ”Źæ”­æ”°æ”±æ”Čæ”łæ””æ”¶æ”čæ”ș攻攜",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"æ¶œæ¶ąæ¶„æ¶Źæ¶­æ¶°æ¶±æ¶łæ¶Žæ¶¶æ¶·æ¶č",5,"淁淂淃淈淉淊"], -["9c40","æ·æ·Žæ·æ·æ·’æ·“æ·”æ·•æ·—æ·šæ·›æ·œæ·Ÿæ·ąæ·Łæ·„æ·§æ·šæ·©æ·Șæ·­æ·Żæ·°æ·Č淎淔淶淞æ·șæ·œ",7,"æž†æž‡æžˆæž‰æž‹æžæž’æž“æž•æž˜æž™æž›æžœæžžæžŸæžąæžŠæž§æžšæžȘæžŹæžźæž°æž±æžłæž”"], -["9c80","æž¶æž·æžčæž»",7,"æč…",7,"æčæčæč‘æč’æč•æč—æč™æčšæčœæčæčžæč ",10,"æčŹæč­æčŻ",14,"æș€æșæș‚æș„æș‡æșˆæșŠ",4,"æș‘",6,"æș™æșšæș›æșæșžæș æșĄæșŁæș€æșŠæșšæș©æș«æșŹæș­æșźæș°æșłæș”æșžæșčæșŒæșŸæșżæ»€æ»ƒæ»„æ»…æ»†æ»ˆæ»‰æ»Šæ»Œæ»æ»Žæ»æ»’æ»–æ»˜æ»™æ»›æ»œæ»æ»Łæ»§æ»Ș",5], -["9d40","æ»°æ»±æ»Čæ»łæ»”æ»¶æ»·æ»žæ»ș",7,"挃挄挅指挈挊",4,"挐挑挒挖",9,"æŒĄæŒąæŒŁæŒ„æŒŠæŒ§æŒšæŒŹæŒźæŒ°æŒČ挎挔挷",6,"æŒżæœ€æœæœ‚"], -["9d80","會朄朅月有朊朌朎",9,"æœ™æœšæœ›æœæœŸæœ æœĄæœŁæœ€æœ„æœ§",5,"æœŻæœ°æœ±æœłæœ”æœ¶æœ·æœč朻朜",6,"柅柆柇柊柋柏",12,"æŸæŸžæŸŸæŸ æŸą",4,"柚",10,"柎柔柷柞æŸș",5,"æżæżƒ",5,"æżŠ",6,"æż“",10,"æżŸæżąæżŁæż€æż„"], -["9e40","æżŠ",7,"æż°",32,"瀒",7,"瀜",6,"瀀",6], -["9e80","瀫",9,"瀶瀷瀞ç€ș",17,"灍灎灐",13,"灟",11,"灟灱çČ灳灎灷çčçș灻灜炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰ç‚Č炎炔炶ç‚șç‚Ÿç‚żçƒ„çƒ…çƒ†çƒ‡çƒ‰çƒ‹",12,"烚"], -["9f40","çƒœçƒçƒžçƒ çƒĄçƒąçƒŁçƒ„çƒȘ烟烰",6,"烞çƒș烻烌烟",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"ç„Č焳焮"], -["9f80","焔焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"ç…„ç…©",4,"煯煰煱煎煔煶煷ç…č煻煌煟",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩ç†Ș熫熭",5,"熎熶熷熞ç†ș",8,"燄",9,"燏",4], -["a040","燖",9,"燥燹燣燀燊燚",5,"燯",9,"ç‡ș",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爟爯çˆČ爳爎çˆș爌爟牀",6,"ç‰‰ç‰Šç‰‹ç‰Žç‰ç‰ç‰‘ç‰“ç‰”ç‰•ç‰—ç‰˜ç‰šç‰œç‰žç‰ ç‰Łç‰€ç‰„ç‰šç‰Șç‰«ç‰Źç‰­ç‰°ç‰±ç‰łç‰Žç‰¶ç‰·ç‰žç‰»ç‰Œç‰œçŠ‚çŠƒçŠ…",4,"犌犎犐犑犓",11,"犠",11,"犟犱çŠČ犳犔çŠș",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1","ă€€ă€ă€‚Â·Ë‰Ë‡Âšă€ƒă€…â€”ïœžâ€–â€Šâ€˜â€™â€œâ€ă€”ă€•ă€ˆ",7,"ă€–ă€—ă€ă€‘Â±Ă—Ă·âˆ¶âˆ§âˆšâˆ‘âˆâˆȘâˆ©âˆˆâˆ·âˆšâŠ„âˆ„âˆ âŒ’âŠ™âˆ«âˆźâ‰Ąâ‰Œâ‰ˆâˆœâˆâ‰ â‰źâ‰Żâ‰€â‰„âˆžâˆ”âˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïŒ„Â€ïż ïżĄâ€°Â§â„–â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Č※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑮",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","ïŒïŒ‚ïŒƒïż„ïŒ…",88,"ïżŁ"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"ÎŁ",6], -["a6c1","α",16,"σ",6], -["a6e0","ïžčïžșïžżïč€ïžœïžŸïčïč‚ïčƒïč„"], -["a6ee",""], -["a6f4","ïžłïžŽ"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ËŠË‹Ë™â€“â€•â€„â€”â„…â„‰â†–â†—â†˜â†™âˆ•âˆŸâˆŁâ‰’â‰Šâ‰§âŠżâ•",35,"▁",6], -["a880","█",7,"â–“â–”â–•â–Œâ–œâ—ąâ—Łâ—€â—„â˜‰âŠ•ă€’ă€ă€ž"], -["a8a1","ÄĂĄÇŽĂ Ä“Ă©Ä›ĂšÄ«Ă­ÇĂŹĆĂłÇ’ĂČĆ«ĂșǔĂčÇ–Ç˜ÇšÇœĂŒĂȘɑ"], -["a8bd","Ƅƈ"], -["a8c0","ÉĄ"], -["a8c5","ㄅ",36], -["a940","〡",8,"ăŠŁăŽŽăŽăŽœăŽăŽžăŽĄă„ăŽă‘ă’ă•ïž°ïżąïż€"], -["a959","â„Ąăˆ±"], -["a95c","‐"], -["a960","ăƒŒă‚›ă‚œăƒœăƒŸă€†ă‚ă‚žïč‰",9,"ïč”ïč•ïč–ïč—ïč™",8], -["a980","ïčą",4,"ïčšïč©ïčȘïč«"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狱",5,"ç‹Ș狫狔狶ç‹čç‹œç‹Ÿç‹żçŒ€çŒ‚çŒ„",5,"çŒ‹çŒŒçŒçŒçŒçŒ‘çŒ’çŒ”çŒ˜çŒ™çŒšçŒŸçŒ çŒŁçŒ€çŒŠçŒ§çŒšçŒ­çŒŻçŒ°çŒČçŒłçŒ”çŒ¶çŒș猻猌猜獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"çźç°ç±"], -["ab40","çČ",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"çŽȘ玏玭玱玎玔玶玞çŽčçŽŒçŽœçŽŸçŽżççƒ",4], -["ab80","珋珌珎珒",6,"çšç›çœççŸçĄçąçŁç€çŠçšçȘç«çŹçźçŻç°ç±çł",4], -["ac40","珞",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琀琧琩琫琭琯琱çČ琷",4,"çœçŸçżç‘€ç‘‚",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑟瑯瑱",4,"瑾ç‘čç‘ș"], -["ad40","ç‘»ç‘Œç‘œç‘żç’‚ç’„ç’…ç’†ç’ˆç’‰ç’Šç’Œç’ç’ç’‘",10,"璝璟",7,"ç’Ș",15,"璻",12], -["ad80","瓈",9,"瓓",8,"ç“ç“Ÿç“Ąç“„ç“§",6,"瓰瓱ç“Č"], -["ae40","瓳瓔瓞",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甩甧ç”Ș生甎甶ç”čç”Œç”œç”żç•ç•‚ç•ƒç•„ç•†ç•‡ç•‰ç•Šç•ç•ç•‘ç•’ç•“ç••ç•–ç•—ç•˜"], -["ae80","畝",7,"畧畚畩畫",6,"畳畔當畷ç•ș",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疱疩",4,"疭疶疷ç–șç–»ç–żç—€ç—ç—†ç—‹ç—Œç—Žç—ç—ç—‘ç—“ç——ç—™ç—šç—œç—ç—Ÿç— ç—Ąç—„ç—©ç—Źç—­ç—źç—Żç—Č痳痔痶痷痞ç—ș痻痜痟瘂瘄瘆瘇"], -["af80","ç˜ˆç˜‰ç˜‹ç˜ç˜Žç˜ç˜‘ç˜’ç˜“ç˜”ç˜–ç˜šç˜œç˜ç˜žç˜Ąç˜Łç˜§ç˜šç˜Źç˜źç˜Żç˜±ç˜Č瘶瘷ç˜čç˜ș瘻瘜癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"ç™ç™Ÿç™ ç™Ąç™ąç™€",6,"癬癭發癰",7,"ç™čç™șç™Œç™żçš€çšçšƒçš…çš‰çšŠçšŒçšçšçšçš’çš”çš•çš—çš˜çššçš›"], -["b080","皜",7,"çš„",8,"皯皰皳皔",9,"ç›€ç›ç›ƒć•Šé˜żćŸƒæŒšć“Žć”‰ć“€çš‘ç™Œè”ŒçŸźè‰Ÿçąçˆ±éš˜éžæ°šćź‰äżș按暗ćČžèƒșæĄˆè‚źæ˜‚ç›Žć‡čæ•–ç†Źçż±èą„ć‚Čć„„æ‡ŠæŸłèŠ­æŒæ‰’ć­ć§çŹ†ć…«ç–€ć·Žæ‹”è·‹é¶æŠŠè€™ćéœžçœąçˆžç™œæŸç™Ÿæ‘†äœ°èŽ„æ‹œçš—æ–‘ç­æŹæ‰łèˆŹéąæżç‰ˆæ‰źæ‹ŒäŒŽç“ŁćŠćŠžç»Šé‚Šćžźæą†æŠœè†€ç»‘æŁ’çŁ…èšŒé•‘ć‚è°€è‹žèƒžćŒ…è€’ć‰„"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盩",7,"盰盳盔盶盷ç›șç›»ç›œç›żçœ€çœ‚çœƒçœ…çœ†çœŠçœŒçœŽ",10,"çœ›çœœçœçœžçœĄçœŁçœ€çœ„çœ§çœȘ眫"], -["b180","眬眼眰",4,"çœčçœ»çœœçœŸçœżç‚ç„ç…ç†çˆ",7,"睒",7,"睜薄é›čäżć Ąé„±ćźæŠ±æŠ„æšŽè±čéČçˆ†æŻçą‘æ‚Čć‘ćŒ—èŸˆèƒŒèŽé’Ąć€ç‹ˆć€‡æƒ«ç„™èą«ć„”è‹ŻæœŹçŹšćŽ©ç»·ç”­æł”èčŠèżžé€ŒéŒ»æŻ”é„™çŹ”ćœŒçą§è“–è”œæŻ•æŻ™æŻ–ćžćș‡ç—čé—­æ•ćŒŠćż…èŸŸćŁè‡‚éżé™›éž­èŸčçŒ–èŽŹæ‰äŸżć˜ćžèŸšèŸ©èŸ«éæ ‡ćœȘè†˜èĄšéł–æ†‹ćˆ«ç˜ȘćœŹæ–Œæż’æ»šćźŸæ‘ˆć…”ć†°æŸ„äž™ç§‰é„Œç‚ł"], -["b240","睝睞睟睠着睧睩çȘ睭",11,"çș睻睌瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞥瞣瞀瞊瞚瞫瞭瞟瞯瞱çžČ瞎瞶",4], -["b280","瞌瞟矀",12,"矎",8,"矘矙矚矝",4,"矀病ćč¶çŽ»è æ’­æ‹šé’”æłąćšć‹ƒæé“‚çź”äŒŻćž›èˆ¶è„–è†Šæž€æłŠé©łæ•ćœć“șèĄ„ćŸ äžćžƒæ­„ç°żéƒšæ€–æ“ŠçŒœèŁææ‰èŽąçŹèž©é‡‡ćœ©èœè”Ąé€ć‚èš•æź‹æƒ­æƒšçżè‹èˆ±ä»“æČ§è—æ“çł™æ§œæ›čè‰ćŽ•ç­–äŸ§ć†Œæ”‹ć±‚èč­æ’ć‰èŒŹèŒ¶æŸ„çąŽæœćŻŸćČ”ć·źèŻ§æ‹†æŸŽè±ș搀æŽș蝉銋谗猠é“Čäș§é˜éą€æ˜ŒçŒ–"], -["b340","矩矹çŸȘçŸŻçŸ°çŸ±çŸČ矎矔矷çŸčçŸș矻矌砃",5,"ç Šç ‹ç Žç ç ç “ç •ç ™ç ›ç žç  ç Ąç ąç €ç šç Șç «ç źç Żç ±ç Čç łç ”ç ¶ç œç żçĄçĄ‚çĄƒçĄ„çĄ†çĄˆçĄ‰çĄŠçĄ‹çĄçĄçĄ‘çĄ“çĄ”çĄ˜çĄ™çĄš"], -["b380","硛硜硞",11,"祯",7,"神çĄčçĄșçĄ»çĄœ",6,"ćœșć°ćžžé•żćżè‚ ćŽ‚æ•žç•…ć”±ć€Ąè¶…æŠ„é’žæœć˜Čæœźć·ąć”ç‚’èœŠæ‰Żæ’€æŽŁćœ»æŸˆéƒŽè‡ŁèŸ°ć°˜æ™šćż±æČ‰é™ˆè¶èĄŹæ’‘ç§°ćŸŽæ©™æˆć‘ˆäč˜çš‹æƒ©æŸ„èŻšæ‰żé€žéȘ‹ç§€ćƒç—ŽæŒćŒ™æ± èżŸćŒ›é©°è€»éœżäŸˆć°șè”€çż…æ–„ç‚œć……ć†Čè™«ćŽ‡ćź æŠœé…Źç•ŽèžŒçš æ„ç­čä»‡ç»žçž…äž‘è‡­ćˆć‡șæ©±ćŽšèș‡é”„雏滁陀愚"], -["b440","çą„çą…çą†çąˆçąŠçą‹çąçąçą’çą”çą•çą–çą™çąçąžçą çąąçą€çąŠçąš",7,"織繶繷繞çąșçą»çąŒçąœçążçŁ€çŁ‚çŁƒçŁ„çŁ†çŁ‡çŁˆçŁŒçŁçŁŽçŁçŁ‘çŁ’çŁ“çŁ–çŁ—çŁ˜çŁš",9], -["b480","磀磄磊磧磩çŁȘ磫磭",4,"磳磔磶磞çŁč磻",5,"瀂瀃瀄瀆",6,"çĄ€ć‚šçŸ—æè§Šć€„æŁć·ç©żæ€œäŒ èˆč斘äžČ疼çȘ—ćčąćșŠé—Żćˆ›ćčç‚Šæ¶é”€ćž‚æ˜„æ€żé†‡ć”‡æ·łçșŻè ąæˆłç»°ç–”èŒšçŁé›ŒèŸžæ…ˆç“·èŻæ­€ćˆșè”æŹĄèȘè‘±ć›±ćŒ†ä»Žäž›ć‡‘çȗ醋簇促èčżçŻĄçȘœæ‘§ćŽ”ć‚Źè„†ç˜çČčæ·Źçż æ‘ć­˜ćŻžçŁ‹æ’źæ“æŽȘæŒ«é”™æ­èŸŸç­”ç˜©æ‰“ć€§ć‘†æ­čć‚ŁæˆŽćžŠæź†ä»ŁèŽ·èą‹ćŸ…é€ź"], -["b540","瀍",5,"瀔",9,"瀟",4,"瀄",14,"瀔",4,"ç€œç€żç„‚ç„ƒç„„ç„…ç„‡ç„Š",8,"ç„”ç„•ç„˜ç„™ç„Ąç„Ł"], -["b580","焀焊焩ç„Ș焫焏焟焰",6,"ç„čç„»",4,"犂犃犆犇犈犉犋犌犍犎犐犑犒怠耜担äžčć•éƒžæŽžèƒ†æ—Šæ°źäœ†æƒźæ·ĄèŻžćŒčè›‹ćœ“æŒĄć…šèĄæĄŁćˆ€æŁèčˆć€’ćČ›ç„·ćŻŒćˆ°çš»æ‚Œé“ç›—ćŸ·ćŸ—çš„èčŹçŻç™»ç­‰çžȘć‡łé‚“ć €äœŽæ»ŽèżȘæ•ŒçŹ›ç‹„æ¶€çżŸć«ĄæŠ”ćș•ćœ°è’‚çŹŹćžćŒŸé€’çŒ”éą æŽ‚æ»‡çą˜ç‚čć…žé›ćž«ç””äœƒç”žćș—æƒŠć„ æ·€æźżçą‰ćŒé›•ć‡‹ćˆæŽ‰ćŠé’“è°ƒè·ŒçˆčçąŸè¶èż­è°ć "], -["b640","穓",6,"穛",11,"犚",10,"犎",4,"çŠŒçŠżç§‚ç§„ç§…ç§‡ç§ˆç§Šç§Œç§Žç§ç§ç§“ç§”ç§–ç§—ç§™",5,"ç§ ç§Ąç§ąç§„ç§šç§Ș"], -["b680","ç§Źç§źç§±",6,"ç§čç§șç§Œç§Ÿç§żçšçš„çš…çš‡çšˆçš‰çšŠçšŒçš",4,"çš•çš–çš˜çš™çš›çšœäžç›Żćźé’‰éĄ¶éŒŽé”­ćźšèźąäžąäžœć†Źè‘Łæ‡‚ćŠšæ ‹äŸ—æ«ć†»æŽžć…œæŠ–æ–—é™Ąè±†é€—ç—˜éƒœçŁæŻ’çŠŠç‹ŹèŻ»ć ”çč蔌杜镀肚ćșŠæžĄćŠ’ç«ŻçŸ­é”»æź”æ–­çŒŽć †ć…‘é˜ŸćŻč湩搚èčČæ•ŠéĄżć›€é’ç›ŸéæŽ‡ć“†ć€šć€ș枛èșČæœ”è·șèˆ”ć‰æƒ°ć •è›Ÿćłšéč…äż„éąèźčćš„æ¶ćŽ„æ‰Œéé„‚é„żæ©è€Œć„żè€łć°”é„”æŽ±äșŒ"], -["b740","çšçšŸçšĄçšąçš€",14,"皎皔皶皞çšș皟穀",5,"穇",9,"穒",4,"穘",16], -["b780","ç©©",6,"穱ç©Čç©łç©”ç©»ç©Œç©œç©ŸçȘ‚çȘ…çȘ‡çȘ‰çȘŠçȘ‹çȘŒçȘŽçȘçȘçȘ“çȘ”çȘ™çȘšçȘ›çȘžçȘĄçȘąèŽ°ć‘çœšç­äŒäčé˜€æł•çè—©ćž†ç•Șçż»æšŠçŸŸé’’çčć‡ĄçƒŠćèż”èŒƒèŽ©çŠŻé„­æł›ćŠèŠłæ–čè‚Șæˆżé˜ČćŠšä»żèźżçșș攟èČéžć•ĄéŁžè‚„ćŒȘèŻœć è‚șćșŸæČžèŽčèŠŹé…šć©æ°›ćˆ†çș·ćŸç„šæ±ŸçČ‰ć„‹ä»œćżżæ„€çČȘäž°ć°æž«èœ‚ćł°é”‹éŁŽç–Żçƒœé€ąć†ŻçŒèźœć„‰ć‡€äœ›ćŠć€«æ•·è‚€ć­”æ‰¶æ‹‚èŸćč…æ°ŸçŹŠäŒäż˜æœ"], -["b840","çȘŁçȘ€çȘ§çȘ©çȘȘçȘ«çȘź",4,"çȘŽ",10,"竀",10,"竌",9,"ç«—ç«˜ç«šç«›ç«œç«ç«Ąç«ąç«€ç«§",5,"竟竰竱ç«Č竳"], -["b880","竎",4,"ç«»ç«Œç«ŸçŹ€çŹçŹ‚çŹ…çŹ‡çŹ‰çŹŒçŹçŹŽçŹçŹ’çŹ“çŹ–çŹ—çŹ˜çŹšçŹœçŹçŹŸçŹĄçŹąçŹŁçŹ§çŹ©çŹ­æ”źæ¶ȘçŠèą±ćŒ—ç”«æŠšèŸ…äżŻé‡œæ–§è„Żè…‘ćșœè…è”Žć‰ŻèŠ†è”‹ć€ć‚…ä»˜é˜œçˆ¶è…čèŽŸćŻŒèźŁé™„ćŠ‡çŒšć’ć™¶ć˜ŽèŻ„æ”č抂钙盖æș‰ćčČç”˜æ†æŸ‘ç«żè‚è”¶æ„Ÿç§†æ•ąè”Łć†ˆćˆšé’ąçŒžè‚›çșČćČ—æžŻæ çŻ™çš‹é«˜è†çŸ”çł•æžé•çšżć‘Šć“„æ­Œææˆˆéžœèƒłç–™ć‰Čé©è‘›æ Œè›€é˜éš”é“ŹäžȘ搄给æ č跟耕曎ćșšçŸč"], -["b940","珯珰çŹČ珎珔珶珷çŹčçŹ»çŹœçŹż",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"ç­Żç­°ç­łç­Žç­¶ç­žç­șç­Œç­œç­żçźçź‚çźƒçź„çź†",6,"缎缏"], -["b980","çź‘çź’çź“çź–çź˜çź™çźšçź›çźžçźŸçź çźŁçź€çź„çźźçźŻçź°çźČ石矔矶矷çźč",7,"çŻ‚çŻƒçŻ„ćŸ‚è€żæą—ć·„æ”»ćŠŸæ­éŸšäŸ›èșŹć…Źćź«ćŒ“ć·©æ±žæ‹±èŽĄć…±é’©ć‹ŸæČŸè‹Ÿç‹—ćžąæž„èŽ­ć€ŸèŸœè‡ć’•çźäŒ°æČœć­€ć§‘éŒ“ć€è›ŠéȘšè°·è‚Ąæ•…éĄŸć›șé›‡ćˆźç“œć‰ćŻĄæŒ‚è€‚äč–æ‹æ€ȘæŁșć…łćź˜ć† è§‚çźĄéŠ†çœæƒŻçŒèŽŻć…‰ćčżé€›ç‘°è§„ćœ­çĄ…ćœ’éŸŸé—șèœšéŹŒèŻĄç™žæĄ‚æŸœè·ȘèŽ”ćˆœèŸŠæ»šæŁé”…éƒ­ć›œæžœèŁčèż‡ć“ˆ"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"çŻ›çŻœçŻžçŻŸçŻ çŻąçŻŁçŻ€çŻ§çŻšçŻ©çŻ«çŻŹçŻ­çŻŻçŻ°çŻČ",4,"篞çŻčçŻșçŻ»çŻœçŻż",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"ç° ",5,"ç°šç°©ç°«",12,"ç°č",5,"籂éȘžć­©æ”·æ°Šäș„ćźłéȘ‡é…Łæ†šé‚ŻéŸ©ć«æ¶”ćŻ’ć‡œć–Šçœ•çż°æ’Œææ—±æ†Ÿæ‚ç„Šæ±—æ±‰ć€Żæ­èˆȘ棕暎è±ȘæŻ«éƒć„œè€—ć·æ”©ć‘”ć–è·èæ žçŠŸć’Œäœ•ćˆç›’èȉ阂æČłæ¶žè”«è€éč€èŽșć˜żé»‘ç—•ćŸˆç‹ æšć“ŒäșšæšȘèĄĄæ’èœ°ć“„çƒ˜è™čéžżæŽȘćźćŒ˜çșąć–‰äŸŻçŒŽćŒćŽšć€™ćŽć‘ŒäčŽćżœç‘šćŁ¶è‘«èƒĄèŽç‹çłŠæč–"], -["bb40","籃",9,"籎",36,"ç±”",5,"籟",9], -["bb80","çȈçȊ",6,"çȓçȔçȖçșçȚçțçČ çČĄçČŁçČŠçȧçČšçČ©çČ«çČŹçČ­çČŻçȰçČŽ",4,"çČșçČ»ćŒ§è™Žć”ŹæŠ€äș’æČȘæˆ·èŠ±ć“—ćŽçŒŸæ»‘ç”»ćˆ’ćŒ–èŻæ§ćŸŠæ€€æ·źćæŹąçŽŻæĄ“èż˜çŒ“æąæ‚Łć”€ç—Șè±ąç„•æ¶ŁćźŠćč»è’慌黄çŁșè—ç°§çš‡ć‡°æƒ¶ç…Œæ™ƒć茿è°Žç°æŒ„èŸ‰ćŸœæąè›”ć›žæŻæ‚”æ…§ć‰æƒ æ™ŠèŽżç§œäŒšçƒ©æ±‡èźłèŻČç»˜è€æ˜ć©šé­‚æ”‘æ··è±æŽ»äŒ™ç«èŽ·æˆ–æƒ‘éœèŽ§ç„žć‡»ćœŸćŸșæœșç•žçšœç§Żçź•"], -["bc40","çȿ糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"çł©",5,"çł°",7,"çłčçłșçłŒ",13,"箋",5], -["bc80","箑",14,"玥玣玀玄玊玚玩çŽȘ玏玭玟现",6,"肌鄄èżčæż€èź„éžĄć§Źç»©çŒ‰ć‰æžæŁ˜èŸ‘ç±é›†ćŠæ€„ç–Ÿæ±Čćłć«‰çș§æŒ€ć‡ è„Šć·±è“ŸæŠ€ć†€ć­ŁäŒŽç„­ć‰‚æ‚žæ”ŽćŻ„ćŻ‚èźĄèź°æ—ąćżŒé™…ćŠ“ç»§çșȘć˜‰æž·ć€čäœłćź¶ćŠ èšéąŠèŽŸç”Čé’Ÿć‡çšŒä»·æž¶é©Ÿć«æ­Œç›‘ćšć°–çŹșé—Žç…Žć…Œè‚©è‰°ć„žçŒ„èŒ§æŁ€æŸŹçą±çĄ·æ‹ŁæĄçź€äż­ć‰Șć‡èæ§›é‰Žè·”èŽ±è§é”źçź­ä»¶"], -["bd40","玷",54,"甯",7], -["bd80","甞",32,"ć„èˆ°ć‰‘é„Żæžæș…æ¶§ć»șćƒ”ć§œć°†æ”†æ±Ÿç–†è’‹æĄšć„–èźČćŒ é…±é™è•‰æ€’ç€ç„Šèƒ¶äș€éƒŠæ”‡éȘ„ćš‡ćšŒæ…é“°çŸ«äŸ„è„šç‹Ąè§’é„șçŒŽç»žć‰żæ•™é…”èœżèŸƒć«çȘ–æ­æŽ„çš†ç§žèĄ—é˜¶æˆȘćŠ«èŠ‚æĄ”æ°æ·ç«ç«­æŽç»“è§Łć§æˆ’è—‰èŠ„ç•Œć€Ÿä»‹ç–„èŻ«ć±Šć·Ÿç­‹æ–€é‡‘ä»ŠæŽ„è„ŸçŽ§é”Šä»…è°šèż›éłæ™‹çŠèż‘çƒŹæ”ž"], -["be40","継",12,"ç¶§",6,"ç¶Ż",42], -["be80","線",32,"ć°œćŠČè†ć…ąèŒŽç›æ™¶éČžäșŹæƒŠçČŸçČłç»äș•è­Šæ™Żéąˆé™ćąƒæ•Źé•œćŸ„ç—‰é–ç«Ÿç«žć‡€ç‚ŻçȘ˜æȘç©¶çș çŽ–éŸ­äč…灞äčé…’ćŽ©æ•‘æ—§è‡Œèˆ…ć’Žć°±ç–šéž æ‹˜ç‹™ç–œć±…é©čèŠć±€ć’€çŸ©äžŸæČźèšæ‹’æźć·šć…·è·èžžé”Żäż±ć„æƒ§ç‚Źć‰§æéčƒćšŸć€Šçœ·ć·ç»ąæ’…æ”«æŠ‰æŽ˜ć€”çˆ”è§‰ć†łèŻ€ç»ć‡èŒé’§ć†›ć›ćł»"], -["bf40","ç·»",62], -["bf80","çžș瞌",4,"çč‚",4,"çčˆ",21,"äżŠç«Łæ”šéƒĄéȘć–€ć’–ćĄć’ŻćŒ€æ©æ„·ć‡Żæ…šćˆŠć Ș拘李砍看ćș·æ…·çł æ‰›æŠ—äșąç‚•è€ƒæ‹·çƒ€é ć·è‹›æŸŻæŁ”çŁ•éą—ç§‘ćŁłć’łćŻæžŽć…‹ćˆ»ćźąèŻŸè‚Żć•ƒćžŠæłć‘ć­ç©șæć­”æŽ§æŠ ćŁæ‰ŁćŻ‡æžŻć“­çȘŸè‹Šé…·ćș“èŁ€ć€žćžźæŒŽè·šèƒŻć—ç­·äŸ©ćż«ćźœæŹŸćŒĄç­ç‹‚æĄ†çŸżçœ¶æ—·ć†”äșç›”ćČżçȘ„è‘”ć„Žé­ć‚€"], -["c040","çčž",35,"çșƒ",23,"çșœçșçșž"], -["c080","çșźçșŽçș»çșŒç»–绀经ç»č猊猐猞猷çŒč猻",6,"眃眆",9,"眒眓銈愧æșƒć€æ˜†æ†ć›°æ‹Źæ‰©ć»“é˜”ćžƒæ‹‰ć–‡èœĄè…ŠèŸŁć•ŠèŽ±æ„蔖蓝ć©Șæ æ‹ŠçŻźé˜‘ć…°æŸœè°°æœè§ˆæ‡’çŒ†çƒ‚æ»„ç…æŠ”ç‹Œć»ŠéƒŽæœ—æ”ȘæžćŠłç‰ąè€äœŹć§„é…Șçƒ™æ¶ć‹’äčé›·é•­è•ŸçŁŠçŽŻć„Ąćž’æ“‚è‚‹ç±»æłȘæŁ±æ„žć†·ćŽ˜æąšçŠé»ŽçŻ±ç‹žçŠ»æŒ“ç†æŽé‡ŒéČ€ç€ŒèŽ‰è”ćæ —äžœćŽ‰ćŠ±ç ŸćŽ†ćˆ©ć‚ˆäŸ‹äż"], -["c140","çœ–çœ™çœ›çœœçœçœžçœ çœŁ",4,"çœ«çœŹçœ­çœŻçœ°çœłçœ”çœ¶çœ·çœžçœșçœ»çœŒçœœçœżçŸ€çŸ‚",7,"矋矍矏",4,"矕",4,"çŸ›çŸœçŸ çŸąçŸŁçŸ„çŸŠçŸš",6,"矱"], -["c180","çŸł",4,"çŸșçŸ»çŸŸçż€çż‚çżƒçż„çż†çż‡çżˆçż‰çż‹çżçż",4,"翖翗翙",5,"翹翣痹立çȒæČ„éš¶ćŠ›ç’ƒć“©äż©è”èŽČèżžé•°ć»‰æ€œæ¶Ÿćž˜æ•›è„žé“Ÿæ‹ç‚Œç»ƒçČźć‡‰æąçČ±è‰Żäž€èŸ†é‡æ™Ÿäșźè°…æ’©èŠćƒšç–—ç‡ŽćŻ„èŸœæœŠäș†æ’‚é•Łć»–æ–™ćˆ—èŁ‚çƒˆćŠŁçŒŽçłæž—çŁ·éœ–äžŽé‚»éłžæ·‹ć‡›è”ćæ‹ŽçŽČè±é›¶éŸ„é“ƒäŒ¶çŸšć‡Œç”é™”ćČ­éą†ćŠä»€æșœç‰æŠŽçĄ«éŠç•™ćˆ˜ç˜€æ”æŸłć…­éŸ™è‹ć’™çŹŒçȘż"], -["c240","翀翧翚çżȘ翫翏翭翯çżČ翎",6,"çżœçżŸçżżè€‚è€‡è€ˆè€‰è€Šè€Žè€è€‘è€“è€šè€›è€è€žè€Ÿè€Ąè€Łè€€è€«",5,"è€Č耎è€čè€ș而耟聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"èČ",11,"éš†ćž„æ‹ąé™‡æ„Œćš„æ‚çŻ“æŒé™‹èŠŠćąéą…ćșç‚‰æŽłć€è™éȁéș“çąŒéœČè·Żè”‚éčżæœžçŠ„ćœ•é™†æˆźé©Žć•é“äŸŁæ—…ć±„ć±ĄçŒ•è™‘æ°ŻćŸ‹çŽ‡æ»€ç»żćłŠæŒ›ć­Șæ»Šć”ä豿Ž ç•„æŠĄèœźäŒŠä»‘æČŠçș¶èźș萝èžșçœ—é€»é”Łçź©éȘĄèŁžèœæŽ›éȘ†ç»œćЈéș»çŽ›ç èš‚é©ŹéȘ‚ć˜›ć—ćŸ‹äč°éșŠć–èżˆè„‰çž’éŠ’è›źæ»Ąè”“æ›Œæ…ąæŒ«"], -["c340","聟肁肂肅肈肊肍",5,"è‚”è‚•è‚—è‚™è‚žè‚Łè‚Šè‚§è‚šè‚Źè‚°è‚łè‚”è‚¶è‚žè‚č肻胅胇",4,"胏",6,"èƒ˜èƒŸèƒ èƒąèƒŁèƒŠèƒźèƒ”èƒ·èƒčèƒ»èƒŸèƒżè„€è„è„ƒè„„è„…è„‡è„ˆè„‹"], -["c380","脌脕脗脙脛脜脝脟",12,"è„­è„źè„°è„łè„Žè„”è„·è„č",4,"è„żè°©èŠ’èŒ«ç›Čæ°“ćż™èŽœçŒ«èŒ…é”šæŻ›çŸ›é“†ćŻèŒ‚ć†’ćžœèČŒèŽžäčˆçŽ«æžšæą…é…¶éœ‰ç…€æČĄçœ‰ćȘ’é•æŻçŸŽæ˜§ćݐćŠčćȘšé—šé—·ä»ŹèŒè’™æȘŹç›Ÿé”°çŒ›æąŠć­ŸçœŻé†šéĄçłœèż·è°œćŒ„ç±łç§˜è§…æłŒèœœćŻ†ćč‚æŁ‰çœ ç»”ć†•ć…ć‹‰ćš©çŒ…éąè‹—æçž„è—ç§’æžșćș™ćŠ™è”‘ç­æ°‘æŠżçšżæ•æ‚Żé—œæ˜ŽèžŸéžŁé“­ćć‘œè°Źæ‘ž"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"è…Ąè…ąè…Łè…€è…Šè…šè…Șè…«è…Źè…Żè…Čè…łè…”è…¶è…·è…žè†è†ƒ",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膀膄"], -["c480","膧膩膫",7,"膎",5,"è†Œè†œè†Ÿè†żè‡„è‡…è‡‡è‡ˆè‡‰è‡‹è‡",6,"æ‘čè˜‘æšĄè†œçŁšæ‘©é­”æŠčæœ«èŽ«ćąšé»˜æČ«æŒ ćŻžé™Œè°‹ç‰ŸæŸæ‹‡ç‰Ąäș©ć§†æŻćą“æšźćč•ć‹Ÿæ…•æœšç›źçŠç‰§ç©†æ‹żć“Ș摐钠那湜çșłæ°–äčƒć„¶è€ć„ˆć—ç”·éšŸć›ŠæŒ è„‘æŒé—čæ·–ć‘ąéŠć†…ć«©èƒœćŠźéœ“ć€Șæł„ć°Œæ‹Ÿäœ ćŒżè…»é€†æșș蔫拈ćčŽçąŸæ’”æ»ćż”ćš˜é…żéžŸć°żæè‚ć­œć•źé•Šé•æ¶…æ‚šæŸ ç‹žć‡ćź"], -["c540","臔",14,"è‡€è‡„è‡Šè‡šè‡©è‡«è‡ź",4,"臔",5,"è‡œè‡żèˆƒèˆ‡",4,"舎舏舑舓舕",5,"èˆèˆ èˆ€èˆ„èˆŠèˆ§èˆ©èˆźèˆČèˆșèˆŒèˆœèˆż"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"è‰©æ‹§æłžç‰›æ‰­é’źçșœè„“æ”“ć†œćŒ„ć„ŽćŠȘæ€’ć„łæš–è™ç–ŸæŒȘæ‡ŠçłŻèŻșć“ŠæŹ§éž„æźŽè—•ć‘•ć¶æČ€ć•Șè¶ŽçˆŹćž•æ€•ç¶æ‹æŽ’ç‰ŒćŸ˜æčƒæŽŸæ”€æœ˜ç›˜çŁç›Œç•”ćˆ€ć›äč“ćșžæ—è€Șèƒ–æŠ›ć’†ćˆšç‚źèąè·‘æłĄć‘žèƒšćŸčèŁŽè””é™Ș配䜩æČ›ć–·ç›†ç °æŠšçƒčæŸŽćœ­è“ŹæŁšçĄŒçŻ·è†šæœ‹éčæ§çą°ćŻç ’éœčæ‰čæŠ«ćŠˆç”æŻ—"], -["c640","è‰Șè‰«è‰Źè‰­è‰±è‰”è‰¶è‰·è‰žè‰»è‰ŒèŠ€èŠèŠƒèŠ…èŠ†èŠ‡èŠ‰èŠŒèŠèŠ“èŠ”èŠ•èŠ–èŠšèŠ›èŠžèŠ èŠąèŠŁèŠ§èŠČ芔芶èŠșèŠ»èŠŒèŠżè‹€è‹‚è‹ƒè‹…è‹†è‹‰è‹è‹–è‹™è‹šè‹è‹ąè‹§è‹šè‹©è‹Șè‹Źè‹­è‹źè‹°è‹Čè‹łè‹”è‹¶è‹ž"], -["c680","è‹ș苌",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩èŒȘèŒźèŒ°èŒČèŒ·èŒ»èŒœć•€è„Ÿç–Č皼ćŒčç—žćƒ»ć±è­ŹçŻ‡ćç‰‡éȘ—éŁ˜æŒ‚ç“ąç„šæ’‡çž„æ‹Œéą‘èŽ«ć“è˜äč’ćȘè‹č萍ćčłć‡­ç“¶èŻ„ć±ćĄæłŒéą‡ć©†ç Žé­„èż«çČ•ć‰–æ‰‘é“șä»†èŽ†è‘Ąè©è’ČćŸ”æœŽćœƒæ™źæ”Šè°±æ›ç€‘æœŸæŹșæ –æˆšćŠ»äžƒć‡„æŒ†æŸ’æČć…¶æŁ‹ć„‡æ­§ç•ŠćŽŽè„éœæ——ç„ˆç„éȘ‘è”·ćȂäčžäŒćŻć„‘ç Œć™šæ°”èż„ćŒƒæ±œæłŁè꫿ސ"], -["c740","èŒŸèŒżèè‚è„è…èˆèŠ",4,"荓荕",4,"èèąè°",6,"èčèș荟",6,"èŽ‡èŽˆèŽŠèŽ‹èŽŒèŽèŽèŽèŽ‘èŽ”èŽ•èŽ–èŽ—èŽ™èŽšèŽèŽŸèŽĄ",6,"èŽŹèŽ­èŽź"], -["c780","èŽŻèŽ”èŽ»èŽŸèŽżè‚èƒè„è†èˆè‰è‹èèŽèè‘è’è“è•è—è™èšè›èžèąèŁè€èŠè§èšè«èŹè­æ°æŽœç‰”æ‰Šé’Žé“…ćƒèżç­Ÿä»Ÿè°ŠäčŸé»”é’±é’łć‰æœœéŁæ”…è°Žć ‘ć”ŒæŹ æ­‰æžȘć‘›è…”çŸŒćą™è”·ćŒșæŠąæ©‡é”迕ȿ‚„æĄ„çž§äč”äŸšć·§éž˜æ’Źçż˜ćł­äżçȘćˆ‡èŒ„äž”æ€ŻçȘƒé’ŠäŸ”äșČ秊琎拀èŠčæ“’çŠœćŻæČé’èœ»æ°ąć€Ÿćżæž…æ“Žæ™Žæ°°æƒ…éĄ·èŻ·ćș†çŒç©·ç§‹äž˜é‚±çƒæ±‚ć›šé…‹æł…è¶‹ćŒș蛆æ›ČèșŻć±ˆé©±æž "], -["c840","èźèŻèł",4,"èșè»èŒèŸèżè€è‚è…è‡èˆè‰èŠèè’",5,"萙萚萛萞",5,"萩",7,"èČ",5,"èčèș萻萟",7,"葇葈葉"], -["c880","葊",6,"葒",4,"è‘˜è‘è‘žè‘Ÿè‘ è‘ąè‘€",4,"è‘Șè‘źè‘Żè‘°è‘Č葎葷è‘čè‘»è‘Œć–ćš¶éŸ‹è¶ŁćŽ»ćœˆéą§æƒé†›æł‰ć…šç—Šæ‹łçŠŹćˆžćŠçŒș炔瘾据éčŠæŠ·çĄźé›€èŁ™çŸ€ç„¶ç‡ƒć†‰æŸ“ç“€ćŁ€æ”˜ćš·èź©é„¶æ‰°ç»•æƒč热棏仁äșșćżéŸ§ä»»èź€ćˆƒćŠŠçș«æ‰”ä»æ—„æˆŽèŒžè“‰èŁèžç†”æș¶ćźčç»’ć†—æ‰æŸ”è‚‰èŒčè •ć„’ć­șćŠ‚èŸ±äčłæ±ć…„è€„èœŻé˜źè•Šç‘žé”é—°æ¶Šè‹„ćŒ±æ’’æŽ’èšè…źéłƒćĄžè”›äž‰ć"], -["c940","葜",4,"蒃蒄蒅蒆蒊蒍蒏",7,"è’˜è’šè’›è’è’žè’Ÿè’ è’ą",12,"è’°è’±è’łè’”è’¶è’·è’»è’Œè’Ÿè“€è“‚è“ƒè“…è“†è“‡è“ˆè“‹è“Œè“Žè“è“’è“”è“•è“—"], -["c980","蓘",4,"è“žè“Ąè“ąè“€è“§",4,"è“­è“źè“Żè“±",10,"è“œè“Ÿè”€è”è”‚äŒžæ•ŁæĄ‘ć—“äž§æ”éȘšæ‰«ć«‚ç‘Ÿè‰Čæ¶©æŁźćƒ§èŽŽç ‚æ€ćˆčæČ™çș±ć‚»ć•„ç…žç­›æ™’çŠè‹«æ‰ć±±ćˆ ç…œèĄ«é—Șé™•æ“…è”Ąè†łć–„æ±•æ‰‡çŒźćą’äŒ€ć•†è”æ™ŒäžŠć°šèŁłæąąæŽçšçƒ§èŠć‹șéŸ¶ć°‘ć“šé‚”ç»ć„ąè”Šè›‡èˆŒèˆè”Šæ‘„ć°„æ…‘æ¶‰ç€ŸèźŸç ·ç”łć‘»äŒžèș«æ·±ćš ç»…焞æČˆćźĄć©¶ç”šè‚Ÿæ…Žæž—ćŁ°ç”Ÿç”„ç‰Čć‡ç»ł"], -["ca40","蔃",8,"è”è”Žè”è”è”’è””è”•è”–è”˜è”™è”›è”œè”è”žè” è”ą",8,"蔭",9,"蔟",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕄蕊蕧蕩",8,"è•łè•”è•¶è•·è•žè•Œè•œè•żè–€è–çœç››ć‰©èƒœćœŁćžˆć€±ç‹źæ–œæčżèŻ—ć°žè™±ćçŸłæ‹Ÿæ—¶ä»€éŁŸèš€ćźžèŻ†ćČçŸąäœżć±Žé©¶ć§‹ćŒç€șćŁ«äž–æŸżäș‹æ‹­èȘ“é€ćŠżæ˜Żć—œć™Źé€‚ä»•äŸé‡Šé„°æ°ćž‚æƒćź€è§†èŻ•æ”¶æ‰‹éŠ–ćźˆćŻżæŽˆć”źć—ç˜Šć…œè”ŹæžąæąłæźŠæŠ’èŸ“ć”èˆ’æ·‘ç–äčŠè”Žć­°ç†Ÿè–ݿ𑿛™çœČèœ€é»éŒ ć±žæœŻèż°æ ‘æŸæˆç«–ćą…ćș¶æ•°æŒ±"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"è–„è–Šè–§è–©è–«è–Źè–­è–±",5,"è–žè–ș",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"è—„è—Šè—§è—šè—Ș",14,"æ•ćˆ·è€æ‘”èĄ°ç”©ćž…æ “æ‹ŽéœœćŒçˆœè°æ°ŽçĄçšŽćźçžŹéĄșèˆœèŻŽçĄ•æœ”çƒæ–Żæ’•ć˜¶æ€ç§ćžäžæ­»è‚†ćŻș旣曛äŒș䌌é„Čć·łæŸè€žæ€‚éą‚é€ćź‹èźŒèŻ”æœè‰˜æ“žć—œè‹é…„äż—çŽ é€Ÿçȟ想桑æșŻćźżèŻ‰è‚ƒé…žè’œçź—è™œéš‹éšç»„é«“çąŽćČç©—é‚éš§ç„Ÿć­™æŸçŹ‹è“‘æą­ć”†çŒ©ççŽąé”æ‰€ćĄŒä»–ćźƒć„č桔"], -["cc40","è—čè—ș藌藜藟蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘚è˜Ș",13,"è˜čè˜șè˜»è˜œè˜Ÿè˜żè™€"], -["cc80","虁",11,"虒虓處",4,"è™›è™œè™è™Ÿè™ è™Ąè™Ł",7,"獭挞èč‹èžèƒŽè‹”æŠŹć°æł°é…žć€Șæ€æ±°ćæ‘ŠèŽȘç˜«æ»©ć›æȘ€ç—°æœ­è°­è°ˆćŠæŻŻèą’çąłæŽąćčç‚­æ±€ćĄ˜æȘć ‚æŁ è†›ć”çł–ć€˜èșșæ·Œè¶Ÿçƒ«æŽæ¶›æ»”ç»Šè„æĄƒé€ƒæ·˜é™¶èźšć„—ç‰č藀腟疌èȘŠæąŻć‰”èžąé”‘æéą˜èč„ć•Œäœ“æ›żćšæƒ•æ¶•ć‰ƒć±‰ć€©æ·»ćĄ«ç”°ç”œæŹèˆ”è…†æŒ‘æĄèżąçœșè·łèŽŽé“ćž–ćŽ…ćŹçƒƒ"], -["cd40","è™­è™Żè™°è™Č",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"èš„èšŠèš«èš­èšźèšČèšłèš·èšžèšč蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","è›è› è›Ąè›ąè›Łè›„è›Šè›§è›šè›Șè›«è›Źè›Żè›”è›¶è›·è›șè›»è›Œè›œè›żèœèœ„èœ…èœ†èœ‹èœŒèœŽèœèœèœ‘èœ”èœ–æ±€ć»·ćœäș­ćș­æŒșè‰‡é€šæĄé…źçžłćŒé“œćœ€ç«„æĄ¶æ…ç­’ç»Ÿç—›ć·æŠ•ć€Žé€ć‡žç§ƒçȘć›ŸćŸ’é€”æ¶‚ć± ćœŸćć…”æčć›ąæŽšéą“è…żèœ•è€Șé€€ćžć±Żè‡€æ‹–æ‰˜è„±éž”é™€é©źé©Œæ€­ćŠ„æ‹“ć”ŸæŒ–ć“‡è›™æŽŒćšƒç“Šèąœæ­Șć€–è±ŒćŒŻæčŸçŽ©éĄœäžžçƒ·ćźŒçą—æŒœæ™šçš–æƒ‹ćź›ć©‰äž‡è…•æ±Ș王äșĄæž‰çœ‘ćŸ€æ—șæœ›ćż˜ćŠ„ćš"], -["ce40","蜙蜛蜝蜟蜠蜀蜊蜧蜚èœȘèœ«èœŹèœ­èœŻèœ°èœČèœłèœ”èœ¶èœžèœčèœș蜌蜜蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"èĄèąèŠ",7,"èŻè±èČèłè”"], -["ce80","蝷蝞èčèșèżèž€èžèž„èž†èž‡èž‰èžŠèžŒèžŽ",4,"螔螕螖螘",6,"螠",4,"ć·ćŸźć±éŸŠèżæĄ…ć›Žć”ŻæƒŸäžșæœç»Žè‹‡èŽć§”äŒŸäŒȘć°ŸçșŹæœȘè”šć‘łç•èƒƒć–‚é­äœæž­è°“ć°‰æ…°ć«ç˜Ÿæž©èšŠæ–‡é—»çșčć»çšłçŽŠé—źć—Ąçżç“źæŒèœ—æ¶ĄçȘæˆ‘æ–Ąć§æĄæČƒć·«ć‘œé’šä茿±ĄèŻŹć±‹æ— èŠœæą§ćŸćŽæŻ‹æ­Šäș”æ‚ćˆèˆžäŒäŸźćžæˆŠé›Ÿæ™€ç‰©ć‹żćŠĄæ‚ŸèŻŻæ˜”ç†™æžè„żçĄ’çŸœæ™°ć˜»ćžé”Ąç‰ș"], -["cf40","螄螊螧螩èžȘèžźèž°èž±èžČ螎螶螷螞èžčèž»èžŒèžŸèžżèŸ",4,"蟇蟈蟉蟌",4,"蟔",6,"èŸœèŸèŸžèŸŸèŸĄèŸąèŸŁèŸ€èŸŠèŸ§èŸšèŸ©èŸ«èŸŹèŸ­èŸŻ",9], -["cf80","èŸșèŸ»èŸŒèŸœèŸżè €è è ‚è „",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"è Łçš€æŻćžŒæ‚‰è†ć€•æƒœç†„çƒŻæșȘ汐犀æȘ„èą­ćž­äč ćȘłć–œé“ŁæŽ—çł»éš™æˆç»†çžŽè™ŸćŒŁéœžèŸ–æš‡ćłĄäŸ ç‹­äž‹ćŽŠć€ć“æŽ€é”šć…ˆä»™éȜçș€ć’žèŽ€èĄ”èˆ·é—Čæ¶ŽćŒŠć«Œæ˜Ÿé™©çŽ°çŒźćŽżè…șéŠ…çŸĄćźȘ陷限çșżç›žćŽąé•¶éŠ™çź±è„„æč˜äčĄçż”ç„„èŻŠæƒłć“äș«éĄčć··æ©Ąćƒć‘è±Ąè§çĄéœ„ć‰Šć“źćšŁé”€æ¶ˆćź”æ·†æ™“"], -["d040","è €",13,"è ł",5,"è șè »è œè Ÿè żèĄèĄ‚èĄƒèĄ†",5,"èĄŽ",5,"èĄ•èĄ–èĄ˜èĄš",6,"èĄŠèĄ§èĄȘèĄ­èĄŻèĄ±èĄłèĄŽèĄ”èĄ¶èĄžèĄčèĄș"], -["d080","èĄ»èĄŒèą€èąƒèą†èą‡èą‰èąŠèąŒèąŽèąèąèą‘èą“èą”èą•èą—",4,"èą",4,"èąŁèą„",5,"ć°ć­æ Ąè‚–ć•žçŹ‘æ•ˆæ„”äș›æ­‡èŽéž‹ćæŒŸæșé‚Șæ–œèƒè°ć†™æą°ćžèŸčæ‡ˆæł„æł»è°ąć±‘è–ȘèŠŻé”ŒæŹŁèŸ›æ–°ćż»ćżƒäżĄèĄ…æ˜Ÿè…„çŒ©æƒșć…Žćˆ‘ćž‹ćœąé‚ąèĄŒé†’ćčžææ€§ć§“ć…„ć‡¶èƒžćŒˆæ±čé›„ç†ŠäŒ‘äżźçŸžæœœć—…é”ˆç§€èą–ç»ŁćąŸæˆŒéœ€è™šć˜˜éĄ»ćŸèźžè“„é…—ć™æ—­ćșç•œæ€ç”źć©żç»Șç»­èœ©ć–§ćźŁæ‚Źæ—‹çŽ„"], -["d140","èąŹèąźèąŻèą°èąČ",4,"èąžèąčèąșèą»èąœèąŸèążèŁ€èŁƒèŁ„èŁ‡èŁˆèŁŠèŁ‹èŁŒèŁèŁèŁèŁ‘èŁ“èŁ–èŁ—èŁš",4,"èŁ èŁĄèŁŠèŁ§èŁ©",6,"èŁČèŁ”èŁ¶èŁ·èŁșèŁ»èŁœèŁżè€€è€è€ƒ",5], -["d180","耉耋",4,"耑耔",4,"耜",4,"è€ąè€Łè€€è€Šè€§è€šè€©è€Źè€­è€źè€Żè€±è€Čè€łè€”è€·é€‰ç™Łçœ©ç»šéŽè–›ć­Šç©Žé›ȘèĄ€ć‹‹ç†ćŸȘæ—ŹèŻąćŻ»é©Żć·Ąæź‰æ±›èź­èźŻé€Šèż…ćŽ‹æŠŒéžŠéž­ć‘€äž«èŠœç‰™èšœćŽ–èĄ™æ¶Żé›…ć“‘äșšèź¶ç„‰ć’œé˜‰çƒŸæ·č盐䞄研蜒ćČ©ć»¶èš€éąœé˜Žç‚ŽæČżć„„æŽ©çœŒèĄæŒ”è‰łć °ç‡•ćŽŒç šé›ć”ćœŠç„°ćźŽè°šéȘŒæźƒć€źéžŻç§§æšæ‰ŹäœŻç–ĄçŸŠæŽ‹é˜łæ°§ä»°ç—’ć…»æ ·æŒŸé‚€è…°ćŠ–ç‘¶"], -["d240","耞",8,"脂脃脅",24,"è„ ",5,"è„§",19,"脌"], -["d280","脜脟芀节芄芅芇",26,"æ‘‡ć°§é„çȘ‘è°Łć§šć’Źèˆ€èŻèŠè€€æ€°ć™Žè€¶çˆ·é‡Žć†¶äčŸéĄ”æŽ–äžšć¶æ›łè…‹ć€œæ¶Č侀ćŁčćŒ»æ–é“±äŸäŒŠèĄŁéąć€·é—ç§»ä»Ș胰疑æČ‚ćźœć§šćœæ€…èšć€šć·Čäč™çŸŁä»„è‰ș抑易邑ć±čäșżćœč臆逞肄疫äșŠèŁ”æ„æŻ…ćż†äč‰ç›ŠæșąèŻŁèźźè°ŠèŻ‘ćŒ‚çżŒçżŒç»ŽèŒ”è«ć› æź·éŸłé˜Žć§»ćŸé“¶æ·«ćŻ…é„źć°čćŒ•éš"], -["d340","èŠą",30,"è§ƒè§è§“è§”è§•è§—è§˜è§™è§›è§è§Ÿè§ è§Ąè§ąè§€è§§è§šè§©è§Șè§Źè§­è§źè§°è§±è§Čè§Ž",6], -["d380","è§»",4,"蚁",5,"蚈",21,"ć°è‹±æš±ć©Žéč°ćș”猚èŽčè€è„è§è‡èżŽè”ąç›ˆćœ±éą–çĄŹæ˜ ć“Ÿæ‹„äœŁè‡ƒç—ˆćșžé›èžŠè›čć’æłłæ¶Œæ°žæżć‹‡ç”šćčœäŒ˜æ‚ ćż§ć°€ç”±é‚źé“€çŠčæČčæžžé…‰æœ‰ć‹ćłäœ‘é‡‰èŻ±ćˆćčŒèż‚æ·€äșŽç›‚æŠ†è™žæ„šèˆ†äœ™äżžé€Ÿé±Œæ„‰æžæž”éš…äșˆćš±é›šäžŽć±żçŠčćź‡èŻ­çŸœçŽ‰ćŸŸèŠ‹éƒćé‡ć–»ćłȘćŸĄæ„ˆæŹČ狱è‚ČèȘ‰"], -["d440","蚞",31,"èšż",8,"詉",21], -["d480","詟",25,"è©ș",6,"æ”ŽćŻ“èŁ•éą„è±«é©­éžłæžŠć†€ć…ƒćžŁèąćŽŸæŽèŸ•ć›­ć‘˜ćœ†çŒżæșçŒ˜èżœè‹‘æ„żæ€šé™ąæ›°çșŠè¶Šè·ƒé’„ćČłçČ€æœˆæ‚Šé˜…è€˜äș‘éƒ§ćŒ€é™šć…èżè•Žé…æ™•éŸ”ć­•ćŒç žæ‚æ œć“‰çŸćź°èœœć†ćœšć’±æ”’æš‚è”žè”ƒè„è‘Źé­çłŸć‡żè—»æžŁæ—©æŸĄèš€èșć™Șé€ çš‚ç¶ç‡„èŽŁæ‹©ćˆ™æłœèŽŒæ€Žćąžæ†Žæ›Ÿè” æ‰Žć–łæžŁæœ­èœ§"], -["d540","èȘ",7,"èȘ‹",7,"èȘ”",46], -["d580","諃",32,"é“Ąé—žçœšæ …æŠšć’‹äčç‚žèŻˆæ‘˜æ–‹ćź…çȘ„ć€șćŻšçž»æŻĄè©čçȘæČŸç›æ–©èŸ—ćŽ­ć±•è˜žæ ˆć æˆ˜ç«™æč›ç»œæšŸç« ćœ°æŒłćŒ æŽŒæ¶šæ–äžˆćžèŽŠä»—èƒ€ç˜Žéšœæ‹›æ˜­æ‰ŸæČŒè””ç…§çœ©ć…†è‚‡ćŹéźæŠ˜ć“Čè›°èŸ™è€…é”—è”—èż™æ”™çæ–ŸçœŸç”„ç §è‡»èŽžé’ˆäŸŠæž•ç–čèŻŠéœ‡æŒŻé•‡é˜”è’žæŒŁçćŸç‹°äș‰æ€”æ•Žæ‹Żæ­Łæ”ż"], -["d640","è«€",34,"èŹˆ",27], -["d680","èŹ€èŹ„èŹ§",30,"ćž§ç—‡éƒ‘èŻèŠæžæ”Żć±èœ˜çŸ„è‚ąè„‚æ±äč‹ç»‡èŒç›Žæ€æź–æ‰§ć€ŒäŸ„ć€æŒ‡æ­ąè¶ŸćȘæ—šçșžćż—æŒšæŽ·è‡łè‡Žçœźćžœćł™ćˆ¶æ™ș秩皚莚炙痔滞æČ»çȘ’äž­ç›…ćż é’ŸèĄ·ç»ˆç§è‚żé‡ä»ČäŒ—èˆŸć‘šć·žæŽČèŻŒçČ„èœŽè‚˜ćžšć’’çš±ćź™æ˜ŒéȘ€ç æ Ș蛛朱çŒȘèŻžèŻ›é€ç«čçƒ›ç…źæ‹„çž©ć˜±äž»è‘—æŸ±ćŠ©è›€èŽźé“žç­‘"], -["d740","譆",31,"è­§",4,"è­­",25], -["d780","èź‡",24,"èźŹèź±èź»èŻ‡èŻèŻȘè°‰è°žäœæłšç„é©»æŠ“çˆȘæ‹œäž“ç –èœŹæ’°è”šçŻ†æĄ©ćș„èŁ…ćŠ†æ’žćŁźçŠ¶æ€Žé”„èżœè”˜ć çŒ€è°†ć‡†æ‰æ‹™ć“æĄŒçąèŒé…Œć•„ç€çŒæ”Šć…čć’šè”„ć§żæ»‹æ·„ć­œçŽ«ä»”ç±œæ»“ć­è‡Șæžć­—éŹƒæŁ•èžȘćź—ç»Œæ€»çș”é‚čè”°ć„æç§Ÿè¶łć’æ—ç„–èŻ…é˜»ç»„é’»çș‚ć˜Žé†‰æœ€çœȘć°Šé”æ˜šć·ŠäœæŸžćšäœœććș§"], -["d840","è°ž",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"è±Ł",6,"è±Ź",6,"豎豔豶豷豻",6,"èȃèȄèȆèȇ"], -["d880","èȈèȋèȍ",6,"èȕèȖèȗèș",20,"äșäžŒć…€äžć»żć…äž•äș˜äžžéŹČ歏晩䞚çŠș便挕äč‡ć€­çˆ»ćźæ°ć›Ÿèƒ€éŠ—æŻ“çŸéŒ—äž¶äșŸéŒäčœäč©äș“èŠˆć­›ć•Źć˜ä»„ćŽćŽćŽŁćŽ„ćŽźé„è”ćŒšć”ćŒŠćŒźćŒŸè”œćŠćŁćˆ‚ćˆˆćˆŽćˆ­ćˆłćˆżć‰€ć‰Œć‰žć‰Ąć‰œè’Żć‰œćŠ‚ćŠćŠćŠ“ć†‚çœ”äș»ä»ƒä»‰ä»‚ä»šä»Ąä»«ä»žäŒ›ä»łäŒąäœ€ä»”䌄䌧䌉䌫䜞䜧攞䜚䜝"], -["d940","èČź",62], -["d980","èł­",32,"䜟䜗äŒČ䌜䜶䜎䟑䟉䟃䟏䜟䜻äŸȘäœŒäŸŹäŸ”äżŠäżšäżȘäż…äżšäżŁäżœäż‘äżŸäżžć€©ćŒäżłć€Źć€ć€źć€­äżŸć€œć€Œć€„ć€šćŸćƒć•ćˆćŽćŹć»ć‚„ć‚§ć‚©ć‚șćƒ–ć„†ćƒ­ćƒŹćƒŠćƒźć„‡ć„‹ä»æ°œäœ˜äœ„äżŽéŸ æ±†ç±Žć…źć·œé»‰éŠ˜ć†ć€”ć‹čćŒèš‡ćŒć‡«ć€™ć…•äș ć…–äșłèĄźèą€äș”è„”èŁ’çŠ€ćŹŽè ƒçŸžć†«ć†±ć†œć†Œ"], -["da40","莎",14,"莠蔑蔒蔗蔟蔄蔚蔩è”Șè”Źè”źè”Żè”±è”Č蔞",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"è¶ è¶Ą"], -["da80","è¶ąè¶€",12,"è¶Čè¶¶è¶·è¶čè¶»è¶œè·€è·è·‚è·…è·‡è·ˆè·‰è·Šè·è·è·’è·“è·”ć‡‡ć†–ć†ąć†„èź èźŠèź§èźȘèźŽèź”èź·èŻ‚èŻƒèŻ‹èŻèŻŽèŻ’èŻ“èŻ”èŻ–èŻ˜èŻ™èŻœèŻŸèŻ èŻ€èŻšèŻ©èŻźèŻ°èŻłèŻ¶èŻčèŻŒèŻżè°€è°‚è°„è°‡è°Œè°è°‘è°’è°”è°•è°–è°™è°›è°˜è°è°Ÿè° è°Ąè°„è°§è°Șè°«è°źè°Żè°Čè°łè°”è°¶ć©ćșé˜é˜ąé˜Ąé˜±é˜Șé˜œé˜Œé™‚é™‰é™”é™Ÿé™§é™Źé™Čé™Žéšˆéšéš—éš°é‚—é‚›é‚é‚™é‚Źé‚Ąé‚Žé‚łé‚¶é‚ș"], -["db40","è·•è·˜è·™è·œè· è·Ąè·ąè·„è·Šè·§è·©è·­è·źè·°è·±è·Č跎跶跌跟",6,"螆螇螈螋融螎螐螑螒螓螕",7,"èž èžĄèž€",4,"螫螭螰èžČèžłèžŽèž¶èž·èžžèž»èžŒèžŸ"], -["db80","èžżèčƒèč…èč†èčŒ",4,"èč“",5,"èčš",11,"èč§èčšèčȘèč«èčźèč±é‚žé‚°éƒéƒ…é‚Ÿéƒéƒ„éƒ‡éƒ“éƒŠéƒąéƒœéƒ—éƒ›éƒ«éƒŻéƒŸé„„é„ąé„žé„Łé„±é„Żé„čé…ƒé…†ćˆć„‚ćŠąćŠŹćŠ­ćŠŸć“żć‹ć‹–ć‹°ćŸç‡źçŸć»Žć‡”ć‡ŒéŹŻćŽ¶ćŒç•šć·ŻćŒćž©ćžĄćĄŸćąŒćŁ…ćŁ‘ćœ©ćœŹćœȘ朳ćœčćœźćœŻćœćœ»ć‚ć©ćž…ć«ćž†ćŒć»ćšć­ć¶ćłćž­ćž€ćžŒćžČćŸćž§ćžŽćž“ćž ćŸ•ćŸ˜ćŸšćŸ™ćŸ’ćžžćŸŽćŸŻćŸžćŸ€ćŸ"], -["dc40","èčłèč”èč·",4,"èčœèčŸèș€èș‚èșƒèș„èș†èșˆ",6,"èș‘èș’èș“èș•",6,"èșèșŸ",11,"èș­èșźèș°èș±èșł",6,"èș»",7], -["dc80","軃",10,"軏",21,"ć ‹ć ćŸœćŸ­ć €ć žć ™ćĄ„ć  ćĄ„ćĄŹćąćą‰ćąšćą€éŠšéŒ™æ‡żè‰čè‰œè‰żèŠèŠŠèŠšèŠ„èŠŽèŠ‘èŠ—èŠ™èŠ«èŠžèŠŸèŠ°è‹ˆè‹Šè‹ŁèŠ˜èŠ·èŠźè‹‹è‹Œè‹èŠ©èŠŽèŠĄèŠȘèŠŸè‹„è‹ŽèŠ€è‹ĄèŒ‰è‹·è‹€èŒèŒ‡è‹œè‹Žè‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè‘è›èœèŒˆèŽ’èŒŒèŒŽèŒ±èŽ›èžèŒŻèè‡èƒèŸè€èŒ—è èŒ­èŒșèŒłèŠè„"], -["dd40","軄",62], -["dd80","茀",32,"èšèŒ›è©èŹèȘè­èźèŽ°èžèŽłèŽŽèŽ èŽȘ莓莜莅荌莶莩荜莞荻莘莞莚èŽșèŽŒèèè„è˜ć ‡è˜è‹èèœè–èœèžè‘è†è”èŸèèƒèžèčèȘè…è€èŠè°èĄè‘œè‘‘è‘šè‘™è‘łè’‡è’ˆè‘șè’‰è‘žèŒè‘†è‘©è‘¶è’Œè’Žè±è‘­è“è“è“è“Šè’œè““è“Šè’żè’șè“ è’Ąè’čè’Žè’—è“„è“Łè”Œç”è”žè“°è”č蔟è”ș"], -["de40","蜅",32,"èœȘèŸ€èŸŒèŸ’èŸèŸ èŸĄèŸąèŸ€èŸ„èŸŠèŸ§èŸȘèŸŹèŸ­èŸźèŸŻèŸČèŸłèŸŽèŸ”èŸ·èŸžèŸșèŸ»èŸŒèŸżèż€èżƒèż†"], -["de80","èż‰",4,"èżèż’èż–èż—èżšèż èżĄèżŁèż§èżŹèżŻèż±èżČèżŽèż”èż¶èżșèż»èżŒèżŸèżżé€‡é€ˆé€Œé€Žé€“é€•é€˜è•–è”»è“żè“Œè•™è•ˆè•šè•€è•žè•șçžąè•ƒè•Č蕻薀薚薇薏è•čè–źè–œè–…è–čè–·è–°è—“è—è—œè—żè˜§è˜…è˜©è˜–è˜Œć»ŸćŒˆć€Œć„è€·ć„•ć„šć„˜ćŒć°ąć°„ć°Źć°Žæ‰Œæ‰ȘæŠŸæŠ»æ‹Šæ‹šæ‹—æ‹źæŒąæ‹¶æŒč捋捃掭揶捱æșæŽŽæŽŽæ­æŽŹæŽŠæ©æŽźæŽŒæČæžæ æżæ„æžæŽæ‘’æ†æŽŸæ‘…æ‘æ‹æ›æ æŒæŠæĄæ‘žæ’„æ‘­æ’–"], -["df40","é€™é€œé€Łé€€é€„é€§",5,"逰",4,"逷é€čé€șé€œé€żé€éƒé…é†éˆ",4,"過達違遖遙遚遜",5,"遀遊遧適éȘ遫遏遯",4,"遶",6,"遟邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邀還邧邚邩邫邭é‚Čé‚·é‚Œé‚œé‚żéƒ€æ‘șæ’·æ’žæ’™æ’șæ“€æ“æ“—æ“€æ“ąæ”‰æ”„æ”źćŒ‹ćż’ç”™ćŒ‘ćŸć±ćœć©ćšć»ć’ć–ć†ć‘‹ć‘’ć‘“ć‘”ć‘–ć‘ƒćĄć‘—ć‘™ćŁćČć’‚ć’”ć‘·ć‘±ć‘€ć’šć’›ć’„ć‘¶ć‘Šć’ć“ć’­ć“‚ć’Žć“’ć’§ć’Šć““ć“”ć‘Čć’Łć“•ć’»ć’żć“Œć“™ć“šć“œć’©ć’Șć’€ć“ć“ć“žć”›ć“§ć” ć“œć””ć“łć”ąć”Łć”ć”‘ć”§ć”Șć•§ć–ć–”ć•‰ć•­ć•ć••ć”żć•ć”Œ"], -["e040","éƒ‚éƒƒéƒ†éƒˆéƒ‰éƒ‹éƒŒéƒéƒ’éƒ”éƒ•éƒ–éƒ˜éƒ™éƒšéƒžéƒŸéƒ éƒŁéƒ€éƒ„éƒ©éƒȘ郏郟郰郱éƒČ郳郔郶郷éƒčéƒșéƒ»éƒŒéƒżé„€é„é„ƒé„…",19,"鄚鄛鄜"], -["e080","é„é„Ÿé„ é„Ąé„€",10,"鄰é„Č",6,"é„ș",8,"é…„ć”·ć•–ć•”ć•¶ć•·ć”łć”°ć•œć–‹ć—’ć–ƒć–±ć–čć–ˆć–ć–Ÿć•Ÿć—–ć–‘ć•»ć—Ÿć–œć–Ÿć–”ć–™ć—Șć—·ć—‰ć˜Ÿć—‘ć—«ć—Źć—”ć—Šć—ć—„ć—Żć—„ć—Čć—łć—Œć—ć—šć—”ć—€èŸ”ć˜žć˜ˆć˜Œć˜ć˜€ć˜Łć—Ÿć˜€ć˜§ć˜­ć™˜ć˜čć™—ć˜Źć™ć™ąć™™ć™œć™Œć™”ćš†ć™€ć™±ć™«ć™»ć™Œćš…ćš“ćšŻć›”ć›—ć›ć›Ąć›”ć›«ć›čć›żćœ„ćœŠćœ‰ćœœćžćž™ćž”ćž‘ćž±ćž»ćžŒ"], -["e140","é……é…‡é…ˆé…‘é…“é…”é…•é…–é…˜é…™é…›é…œé…Ÿé… é…Šé…§é…šé…«é…­é…łé…ș酻酌醀",4,"醆醈醊醎醏醓",6,"醜",5,"醀",5,"醫醏醰醱é†Č醳醶醷醞é†č醻"], -["e180","醌",10,"釈釋釐釒",9,"針",8,"ćž·ćč„ćč”ćč›ćčžćčĄćȌć±șćȍćȐćȖćȈćȘćșćȑćȚćȜćČ”ćČąćČœćČŹćČ«ćȱćȣ況ćČ·ćł„ćł’ćł€ćł‹ćł„ćŽ‚ćŽƒćŽ§ćŽŠćŽźćŽ€ćŽžćŽ†ćŽ›ć”˜ćŽŸćŽŽćŽœć”Źć”›ć”Żć”ć”«ć”‹ć”Šć”©ć”Žć¶‚ć¶™ć¶è±łć¶·ć·…ćœłćœ·ćŸ‚ćŸ‡ćŸ‰ćŸŒćŸ•ćŸ™ćŸœćŸšćŸ­ćŸ”ćŸŒèĄąćœĄçŠ­çŠ°çŠŽçŠ·çŠžç‹ƒç‹ç‹Žç‹ç‹’ç‹šç‹Żç‹©ç‹Čç‹Žç‹·çŒç‹łçŒƒç‹ș"], -["e240","釩",62], -["e280","鈄",32,"ç‹»çŒ—çŒ“çŒĄçŒŠçŒžçŒçŒ•çŒąçŒčçŒ„çŒŹçŒžçŒ±ççç—ç çŹçŻçŸèˆ›ć€„éŁ§ć€€ć€‚é„Łé„§",5,"鄎鄷鄜銀銄銇銊銍銐銑銓銔銕ćș€ćș‘ćș‹ćș–ćș„ćș ćșčćș”ćșŸćșłè”“滒滑滛滚ć»Șè†șćż„ćż‰ćż–ćżæ€ƒćżźæ€„ćżĄćż€ćżŸæ€…æ€†ćżȘćż­ćżžæ€™æ€”æ€Šæ€›æ€æ€æ€©æ€«æ€Šæ€żæ€Ąæžæč恻æș恂"], -["e340","鉆",45,"鉔",16], -["e380","銆",7,"銏",24,"æȘæœæ‚–æ‚šæ‚­æ‚æ‚ƒæ‚’æ‚Œæ‚›æƒŹæ‚»æ‚±æƒæƒ˜æƒ†æƒšæ‚Žæ„ æ„Šæ„•æ„ŁæƒŽæ„€æ„Žæ„«æ…Šæ…”æ†Źæ†”æ†§æ†·æ‡”æ‡”ćżéšłé—©é—«é—±é—łé—”é—¶é—Œé—Ÿé˜ƒé˜„é˜†é˜ˆé˜Šé˜‹é˜Œé˜é˜é˜’é˜•é˜–é˜—é˜™é˜šäžŹçˆżæˆ•æ°”æ±”æ±œæ±ŠæČٿȅæČæČ”æČŒæ±šæ±©æ±Žæ±¶æČ†æČ©æłæł”æČ­æł·æłžæł±æł—æČČæł æł–æłșæł«æłźæČ±æł“æłŻæłŸ"], -["e440","銹",5,"銯",24,"鋉",31], -["e480","鋩",32,"æŽčæŽ§æŽŒæ”ƒæ”ˆæŽ‡æŽ„æŽ™æŽŽæŽ«æ”æŽźæŽ”æŽšæ”æ”’æ””æŽłæ¶‘æ”Żæ¶žæ¶ æ”žæ¶“æ¶”æ”œæ” æ”Œæ”Łæžšæ·‡æ·…æ·žæžŽæ¶żæ· æž‘æ·Šæ·æ·™æž–æ¶«æžŒæ¶źæž«æčźæč޿諿șȿ蟿ș†æč“æč”æžČæž„æč„滟æș±æș˜æ» æŒ­æ»ąæș„æș§æșœæș»æș·æ»—æșŽæ»æșæ»‚æșŸæœąæœ†æœ‡æŒ€æŒ•æ»čæŒŻæŒ¶æœ‹æœŽæŒȘ按挩柉柍柌朞æœČ朌æœșæż‘"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"é«æż‰æŸ§æŸčæŸ¶æż‚æżĄæżźæżžæż æżŻç€šç€Łç€›ç€čç€”ççžćź€ćź„ćź•ćź“ćź„ćźžç”ŻéȘžæŽćŻ€ćŻźè€°ćŻ°èč‡èŹ‡èŸ¶èż“èż•èż„èżźèż€èż©èżŠèżłèżšé€…é€„é€‹é€Šé€‘é€é€–é€Ąé€”é€¶é€­é€Żé„é‘é’ééšé˜éąé›æščéŽéœé‚‚é‚ˆé‚ƒé‚‹ćœćœ—ćœ–ćœ˜ć°»ć’«ć±ć±™ć­±ć±Łć±ŠçŸŒćŒȘćŒ©ćŒ­è‰ŽćŒŒéŹ»ć±źćŠćŠƒćŠćŠ©ćŠȘ抣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"é‹éŒéćŠ—ć§ŠćŠ«ćŠžćŠ€ć§’ćŠČćŠŻć§—ćŠŸćš…ćš†ć§ćšˆć§Łć§˜ć§č湌湉ćšČćšŽćš‘ćšŁćš“ć©€ć©§ć©Šć©•ćšŒć©ąć©”èƒŹćȘȘćȘ›ć©·ć©șćȘŸć««ćȘČć«’ć«”ćȘžć« ć«Łć«±ć«–ć«Šć«˜ć«œćŹ‰ćŹ—ćŹ–ćŹČćŹ·ć­€ć°•ć°œć­šć­„ć­łć­‘ć­“ć­ąé©”é©·é©žé©șé©żé©œéȘ€éȘéȘ…éȘˆéȘŠéȘéȘ’éȘ“éȘ–éȘ˜éȘ›éȘœéȘéȘŸéȘ éȘąéȘŁéȘ„éȘ§çșŸçșĄçșŁçș„çșšçș©"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"çș­çș°çșŸç»€ç»ç»‚ç»‰ç»‹ç»Œç»ç»”ç»—ç»›ç» ç»Ąç»šç»«ç»źç»Żç»±ç»Č猍绶ç»șç»»ç»ŸçŒçŒ‚çŒƒçŒ‡çŒˆçŒ‹çŒŒçŒçŒ‘çŒ’çŒ—çŒ™çŒœçŒ›çŒŸçŒĄ",6,"çŒȘçŒ«çŒŹçŒ­çŒŻ",4,"猔ćčșç•żć·›ç”Ÿé‚•çŽŽçŽ‘çŽźçŽąçŽŸçç‚ç‘çŽ·çŽłç€ç‰çˆç„ç™éĄŒçŠç©ç§çžçŽșçČ琏çȘ瑛琊琄琚琰琟琏"], -["e840","鐯",14,"鐿",43,"鑬鑭鑼鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铊铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑟璜璎璀璁璇璋璞璚璩璐璧瓒ç’șéŸȘéŸ«éŸŹæŒæ“æžæˆæ©æž„æž‡æȘæłæž˜æž§æ”æžšæžžæž­æž‹æ·æŒæŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æž”æŸšæžłæŸæ €æŸƒæžžæŸąæ ŽæŸæŸœæ Čæ łæĄ æĄĄæĄŽæĄąæĄ„æĄ€æąƒæ æĄ•æĄŠæĄæĄ§æĄ€æ ŸæĄŠæĄ‰æ ©æą”æąæĄŽæĄ·æą“æĄ«æŁ‚æ„źæŁŒæ€Ÿæ€ æŁč"], -["e940","é”§é”łé”œé•ƒé•ˆé•‹é••é•šé• é•źé•Žé•”é•·",7,"門",42], -["e980","閫",32,"æ€€æŁ°æ€‹æ€æ„—æŁŁæ€æ„±æ€čæ„ æ„‚æ„æŠ„æ„«æŠ€æŠ˜æ„žæ€Žæ§ŒæŠ‡æŠˆæ§ŽæŠ‰æ„Šæ„Łæ„čæŠ›æŠ§æŠ»æŠ«æŠ­æ§”æŠ±æ§æ§Šæ§ŸæŠ•æ§ æŠæ§żæšŻæ§­æš—æš˜æ©„æ§Č橄暟æȘ æ©æ©›æš”æȘŽæ©č暜暚橘橌æȘ‘æȘæȘ©æȘ—æȘ«çŒ·ç’æźæź‚æź‡æź„æź’æź“æźæźšæź›æźĄæźȘ蜫蜭蜱èœČèœłèœ”èœ¶èœžèœ·èœčèœș蜌蜟蟁蟂蟄蟇蟋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阏阭阯阰阷阞é˜čé˜ș队陁陃陊陎陏陑陒陓陖陗"], -["ea80","é™˜é™™é™šé™œé™é™žé™ é™Łé™„é™Šé™«é™­",4,"陳陾",12,"éš‡éš‰éšŠèŸèŸŽèŸèŸ˜èŸšè»Žæˆ‹æˆ—æˆ›æˆŸæˆąæˆĄæˆ„æˆ€æˆŹè‡§ç“Żç“Žç“żç”ç”‘ç”“æ”Žæ—źæ—Żæ—°æ˜Šæ˜™æČæ˜ƒæ˜•æ˜€ç‚…æ›·æ˜æ˜Žæ˜±æ˜¶æ˜”è€†æ™Ÿæ™”æ™æ™æ™–æ™Ąæ™—æ™·æš„æšŒæš§æšæšŸæ››æ›œæ›Šæ›©èŽČèŽłèŽ¶èŽ»èŽœè”€è”…è”†è”ˆè”‰è”‡è”è”•è”™è§‡è§Šè§‹è§Œè§Žè§è§è§‘ç‰źçŠŸç‰ç‰Šç‰Żç‰Ÿç‰żçŠ„çŠ‹çŠçŠçŠ’æŒˆæŒČ掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隹",7,"隱éšČ階隔隷隞éšșéš»éšżé›‚é›ƒé›ˆé›Šé›‹é›é›‘é›“é›”é›–",9,"雡",6,"雫"], -["eb80","雏雭雟雰雱é›Č雎雔雞é›șé›»é›Œé›œé›żéœ‚éœƒéœ…éœŠéœ‹éœŒéœéœ‘éœ’éœ”éœ•éœ—",4,"éœéœŸéœ æżæ“˜è€„æŻȘæŻłæŻœæŻ”æŻčæ°…æ°‡æ°†æ°æ°•æ°˜æ°™æ°šæ°Ąæ°©æ°€æ°Șæ°Čæ””æ••æ•«ç‰ç‰’ç‰–çˆ°è™ąćˆ–è‚Ÿè‚œè‚“è‚ŒæœŠè‚œè‚±è‚«è‚­è‚Žè‚·èƒ§èƒšèƒ©èƒȘ胛胂胄胙胍胗朐胝胫胱胎胭脍脎èƒČèƒŒæœ•è„’è±šè„¶è„žè„Źè„˜è„Čè…ˆè…Œè…“è…Žè…™è…šè…±è… è…©è…Œè…œè…­è…§ćĄćȘ”è†ˆè†‚è†‘æ»•è†Łè†Ș臌朊臊膻"], -["ec40","霡",8,"éœ«éœŹéœźéœŻéœ±éœł",4,"éœșéœ»éœŒéœœéœż",18,"é”é•é—é˜éšéœééŸéŁé€éŠé§éšéȘ",7], -["ec80","éČ靔靷",4,"靜",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"è‡è†ŠæŹ€æŹ·æŹčæ­ƒæ­†æ­™éŁ‘éŁ’éŁ“éŁ•éŁ™éŁšæźłćœ€æŻ‚è§łæ–éœ‘æ–“æ–Œæ—†æ—„æ—ƒæ—Œæ—Žæ—’æ—–ç‚€ç‚œç‚–ç‚ç‚»çƒ€ç‚·ç‚«ç‚±çƒšçƒŠç„ç„“ç„–ç„Żç„±ç…łç…œç…šç……ç…Č煊煾ç…șç†˜ç†łç†”ç†šç† ç‡ ç‡”ç‡§ç‡č爝爹灬焘煩ç†čæˆŸæˆœæ‰ƒæ‰ˆæ‰‰ç€»ç„€ç„†ç„‰ç„›ç„œç„“ç„šç„ąç„—ç„ ç„Żç„§ç„ș穅穊穚穧穳濑濐"], -["ed40","éžžéžŸéžĄéžąéž€",6,"鞏鞟鞰鞱鞳鞔",46], -["ed80","éŸ€éŸ„éŸšéŸź",4,"韎韷",23,"æ€Œææšæ§ææ™æŁæ‚«æ„†æ„æ…æ†©æ†æ‡‹æ‡‘æˆ†è‚€èżæČ“æł¶æ·ŒçŸ¶çŸžç €ç ‰ç —ç ˜ç ‘æ–«ç ­ç œç ç čç șç »ç Ÿç Œç „ç Źç Łç ©çĄŽçĄ­çĄ–çĄ—ç ŠçĄçĄ‡çĄŒçĄȘ籛籓籚籇籜籡籣çąČçąč繄磔磙磉磏çŁČç€…çŁŽç€“ç€€ç€žç€ŽéŸ›é»č黻黌盱眄眍ç›čçœ‡çœˆçœšçœąçœ™çœ­çœŠçœ”çœžçç‘ç‡çƒçšçš"], -["ee40","頏",62], -["ee80","顎",32,"çąç„çżçžçœçž€çžŒçž‘çžŸçž çž°çž”çžœç”ș畀畎畋畈畛ç•Čç•čç–ƒçœ˜çœĄçœŸè©ˆçœšçœŽçœ±çœč矁真盍盄è Čé’…é’†é’‡é’‹é’Šé’Œé’é’é’é’”é’—é’•é’šé’›é’œé’Łé’€é’«é’Ș钭钬钯钰é’Čé’Žé’¶",4,"é’Œé’œé’żé“„é“ˆ",6,"é“é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“ąé“€é“„é“§é“šé“Ș"], -["ef40","饯",5,"鱋鱎鱒鱕鱙鱣鱹",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飄飊飩",30,"铩铫铟铯铳铎铔铷é“čé“Œé“œé“żé”ƒé”‚é”†é”‡é”‰é”Šé”é”Žé”é”’",4,"锘锛锝锞锟锱é”Ș锫锩锏锱é”Čé”Žé”¶é”·é”žé”Œé”Ÿé”żé•‚é””é•„é•…é•†é•‰é•Œé•Žé•é•’é•“é•”é•–é•—é•˜é•™é•›é•žé•Ÿé•é•Ąé•ąé•€",8,"镯镱é•Č镳é”șçŸ§çŸŹé›‰ç§•ç§­ç§Łç§«çš†ć”‡çšƒçš‚çšžçš”"], -["f040","逈",4,"逎透逑",28,"逯",26], -["f080","鄊",9,"é„–",12,"鄀鄊鄳鄞é„č鄻鄟銂銃銉çščçš·ç©‘é»éŠ„ç©°çšˆçšŽçš“çš™çš€ç“žç“ ç”Źéž éžąéžš",4,"éžČ鞱鞶鞞鞷éžčéžș鞟éčéč‚éč„éč†éč‡éčˆéč‰éč‹éčŒéčŽéč‘éč•éč—éčšéč›éčœéčžéčŁéčŠ",6,"éč±éč­éčłç–’ç–”ç––ç– ç–ç–Źç–Łç–łç–Žç–žç—„ç–±ç–°ç—ƒç—‚ç—–ç—ç—Łç—šç—Šç—€ç—«ç—§ç˜ƒç—±ç—Œç—żç˜ç˜€ç˜…ç˜Œç˜—ç˜Šç˜„瘘瘕瘙"], -["f140","驌驎驚",10,"銊銧銩",47], -["f180","駙",32,"ç˜›ç˜Œç˜ąç˜ ç™€ç˜­ç˜°ç˜żç˜”ç™ƒç˜Ÿç˜łç™ç™žç™”ç™œç™–ç™«ç™ŻçżŠç«Šç©žç©čçȘ€çȘ†çȘˆçȘ•çȘŠçȘ çȘŹçȘšçȘ­çȘłèĄ€èĄ©èĄČèĄœèĄżèą‚èąąèŁ†èą·èąŒèŁ‰èŁąèŁŽèŁŁèŁ„èŁ±è€šèŁŒèŁšèŁŸèŁ°è€Ąè€™è€“è€›è€Šè€Žè€«è€¶è„è„Šè„»ç–‹èƒ„çšČçšŽçŸœè€’è€”è€–è€œè€ è€ąè€„è€Šè€§è€©è€šè€±è€‹è€”èƒè†èè’è©è±èŠƒéĄžéą€éąƒ"], -["f240","é§ș",62], -["f280","éšč",32,"éą‰éąŒéąéąéą”éąšéą›éąžéąŸéąĄéąąéą„éąŠè™è™”è™Źè™źè™żè™șè™Œè™»èššèšèš‹èšŹèšèš§èšŁèšȘ蚓蚩蚶蛄蚔蛎蚰èšșèš±èšŻè›‰è›èšŽè›©è›±è›Čè›­è›łè›èœ“è›žè›Žè›Ÿè›˜è›‘èœƒèœ‡è›žèœˆèœŠèœèœ‰èœŁèœ»èœžèœ„èœźèœšèœŸèˆèœŽèœ±èœ©èœ·èœżèž‚èœąèœèŸè»è è°èŒèźèž‹è“èŁèŒè€è™è„èž“èžŻèžšèŸ’"], -["f340","驚",17,"é©ČéȘƒéȘ‰éȘéȘŽéȘ”éȘ•éȘ™éȘŠéȘ©",6,"éȘČéȘłéȘŽéȘ”éȘčéȘ»éȘœéȘŸéȘżé«ƒé«„髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","é«é«žé« é«ąé«Łé«€é«„é«§é«šé«©é«Ș髏髟髰",8,"é«ș髌",6,"éŹ„éŹ…éŹ†èŸ†èžˆèž…èž­èž—èžƒèž«èŸ„èžŹèž”èžłèŸ‹èŸ“èžœèŸ‘èŸ€èŸŠèŸ›èŸȘèŸ èŸźè –è “èŸŸè Šè ›è Ąè č蠌猶眂眄眅舐ç«șç«œçŹˆçŹƒçŹ„çŹ•çŹŠçŹ«çŹç­‡çŹžçŹȘçŹ™çŹźçŹ±çŹ çŹ„çŹ€çŹłçŹŸçŹžç­˜ç­šç­…ç­”ç­Œç­ç­ ç­źç­»ç­ąç­Čç­±çźçźŠçź§çźžçźŹçźçźšçź…çźȘçźœçźąçź«çźŽçŻ‘çŻçŻŒçŻçŻšçŻ„çŻŠçŻȘç°ŒçŻŸçŻŒç°ç°–ç°‹"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鏠鏥鏹鏀",10,"鏰鏱鏳",7,"éŹœéŹŸéŹżé­€é­†é­Šé­‹é­Œé­Žé­é­’é­“é­•",5], -["f480","魛",32,"簟ç°Șç°Šç°žç±ç±€è‡Ÿèˆèˆ‚èˆ„è‡ŹèĄ„èˆĄèˆąèˆŁèˆ­èˆŻèˆšèˆ«èˆžèˆ»èˆłèˆŽèˆŸè‰„è‰‰è‰‹è‰è‰šè‰Ÿè‰šèĄŸèą…èąˆèŁ˜èŁŸè„žçŸçŸŸçŸ§çŸŻçŸ°çŸČ籌敉çȑçȝçȜçȞçČąçČČçČŒçČœçłçł‡çłŒçłçłˆçł…çł—çłšè‰źæššçŸżçżŽçż•çż„çżĄçżŠçż©çżźçżłçłžç”·ç¶Šç¶źçč‡çș›éșžéșŽè”łè¶„趔趑趱蔧蔭豇豉酊酐酎酏酀"], -["f540","é­Œ",62], -["f580","éź»",32,"é…ąé…Ąé…°é…©é…Żé…œé…Ÿé…Č酮é…č醌醅醐醍醑醱醣é†Ș醭醟醯醔醎é†ș豕éčŸè¶žè·«èž…èč™èč©è¶”è¶żè¶Œè¶șè·„è·–è·—è·šè·žè·Žè·è·›è·†è·Źè··è·žè·Łè·čè·»è·€èž‰è·œèž”èžèžŸèžŹèžźèžŁèžŻèžșèč€èžč螔螜螱èč‰èčèč‚èč‘èč’èčŠèč°èč¶èčŒèčŻèčŽèș…èșèș”èșèșœèșžè±žèȂèȊèȅèȘèČ”æ–›è§–è§žè§šè§œ"], -["f640","鯜",62], -["f680","鰛",32,"è§„è§«è§ŻèšŸèŹŠé“é›©é›łé›Żéœ†éœéœˆéœéœŽéœȘ霭霰霟韀韃韅",5,"韌黟錋錍éščéšŒéšœé›Žé›’çžżé› éŠŽéŠźé‹ˆéŒŸéȘéŠéŽéŸé‘«é±żéȂéȅéȆéȇéȈ皣éȋéȎéȐéȑéȒéȔéȕéȚéțéȞ",5,"éČ„",4,"éČ«éČ­éČźéȰ",7,"éČșéČ»éČŒéČœéł„éł…éł†éł‡éłŠéł‹"], -["f740","é°Œ",62], -["f780","鱻鱜鱟éȀéȃéȄéȉéȊéȌéȏéȓéȖéȗéȘéșéȝéČȘéČŹéČŻéČčéČŸ",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"éł“éł”éł•éł—éł˜éł™éłœéłéłŸéłąéŒéž…éž‘éž’éž”éžŻéž«éžŁéžČ鞮éȘ±éȘ°éȘ·éč˜éȘ¶éȘșéȘŒé«é«€é«…é«‚é«‹é«Œé«‘é­…é­ƒé­‡é­‰é­ˆé­é­‘éŁšé€é€źé„•é„”é«Ÿé«Ąé«Šé«Żé««é«»é«­é«č鬈鬏鬓鬟鬣éșœéșŸçž»éș‚éș‡éșˆéș‹éș’鏖éșéșŸé»›é»œé»é» é»Ÿé»ąé»©é»§é»„é»Șé»ŻéŒąéŒŹéŒŻéŒč錷錜錟霄"], -["f840","鳣",62], -["f880","鎹",32], -["f940","锃",62], -["f980","鶂",32], -["fa40","é¶Ł",62], -["fa80","é·ą",32], -["fb40","鞃",27,"éž€éž§éžźéž°éžŽéž»éžŒéč€éčéčéč’éč“éč”éč–éč™éčéčŸéč éčĄéčąéč„éčźéčŻéčČéčŽ",9,"éș€"], -["fb80","éșéșƒéș„éș…éș†éș‰éșŠéșŒ",5,"éș”",8,"éșžéș ",5,"éș§éșšéș©éșȘ"], -["fc40","éș«",8,"éș”éș¶éș·éșčéșșéșŒéșż",4,"é»…é»†é»‡é»ˆé»Šé»‹é»Œé»é»’é»“é»•é»–é»—é»™é»šé»žé»Ąé»Łé»€é»Šé»šé»«é»Źé»­é»źé»°",8,"é»șé»œé»ż",6], -["fc80","錆",4,"錌錏錑錒錔錕錖錘錚",5,"éŒĄéŒŁ",8,"éŒ­éŒźéŒ°éŒ±"], -["fd40","éŒČ",4,"錞éŒșéŒŒéŒż",4,"霅",10,"霒",38], -["fd80","éœč",5,"韁韂韍",11,"éŸœéŸéŸžéŸĄ",4,"ï€Źï„č裏隣"], -["fe40","ïšŒïšïšŽïšïš‘ïš“ïš”ïš˜ïšŸïš ïšĄïšŁïš€ïš§ïššïš©"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp949.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp949.json deleted file mode 100644 index 2022a00..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp949.json +++ /dev/null @@ -1,273 +0,0 @@ -[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"ê°˜ê°žê°Ÿê°Ąê°ąê°Łê°„",6,"ê°źê°Čê°łê°Ž"], -["8161","갔갶갷ê°șê°»ê°œê°Ÿê°żê±",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"ê±Čê±łê±”ê±¶ê±čê±»",4,"êȂêȇêȈêȍêȎêȏêȑêȒêȓêȕ",6,"êȞêČą",5,"êČ«êČ­êČźêȱ",6,"êČșêČŸêČżêł€êł‚êłƒêł…êł†êł‡êł‰êłŠêł‹êł",7,"êł–êł˜",7,"êłąêłŁêł„êłŠêł©êł«êł­êłźêłČêłŽêł·",4,"êłŸêłżêŽêŽ‚êŽƒêŽ…êŽ‡",4,"ꎎꎐꎒꎓ"], -["8241","êŽ”êŽ•êŽ–êŽ—êŽ™êŽšêŽ›êŽêŽžêŽŸêŽĄ",7,"êŽȘêŽ«êŽź",5], -["8261","ꎶꎷêŽčêŽșꎻꎜ",6,"ꔆꔈꔊ",5,"ꔑꔒꔓꔕꔖꔗ"], -["8281","ê”™",7,"ê”ąê”€",7,"ê”źê”Żê”±ê”Čꔷꔞê”čê”șꔟ궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"ê¶„",17,"ê¶ž",7,"귂귃귅귆귇귉",6,"귒귔",7,"ê·ê·žê·Ÿê·Ąê·ąê·Łê·„",18], -["8341","ê·ș귻규귟Ꞃ",5,"꞊ꞌꞎ",5,"êž•",7], -["8361","ꞝ",18,"êžČêžłêž”êž¶êžčꞻꞌ"], -["8381","êžœêžŸêžżêč‚êč„êč‡êčˆêč‰êč‹êčêč‘êč’êč“êč•êč—",4,"êčžêčąêčŁêč€êčŠêč§êčȘêč«êč­êčźêčŻêč±",6,"êčșêčŸ",5,"êș†",5,"êș",46,"êșżê»ê»‚껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껊껧껩ê»Șê»Źê»ź",5,"껔껶껷ê»čê»ș껻껜",8], -["8461","ꌆꌉꌊꌋꌌꌎꌏꌑ",18], -["8481","ꌀ",7,"êŒźêŒŻêŒ±êŒłêŒ”",6,"ꌟ꜀꜄꜅꜆꜇꜊",5,"꜑",10,"ꜞ",5,"꜊",18,"êœș",5,"ꟁꟂꟃꟅꟆꟇꟉ",6,"꟒ꟓ꟔Ꟗ",5,"꟝",26,"êŸșꟻꟜ꟟"], -["8541","êŸżêż",5,"êżŠêżŒêż",4,"êż•",6,"êż",4], -["8561","êżą",5,"êżȘ",5,"êżČêżłêż”êż¶êż·êżč",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"ëŸëżë‚ë‚‚ë‚ƒë‚…",6,"낎낐낒",5,"ë‚›ë‚ë‚žë‚Łë‚€"], -["8641","낄낊낧ë‚Ș낰ë‚Č낶낷ë‚čë‚ș낻난",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냥냹냣냀냊",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넊넧넩ë„Ș넫넭",6,"넶ë„ș",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"ë…șë…»ë…œë…Ÿë…żë†ë†ƒ",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","ë†č",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"ë‡Ș뇫뇭뇟뇯뇱",7,"ë‡ș뇌뇟",5,"눆눇눉눊눍",6,"눖눘눚",5,"눥",18,"눔",6,"눜",26,"뉙뉚뉛뉝뉞뉟뉡",6,"ë‰Ș",4], -["8841","뉯",4,"뉶",5,"뉜",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늹늀늧늚늩늫늭늟늯늱ëŠČ늳는늶늷"], -["8881","늾",15,"닊닋닍닎닏닑닓",4,"ë‹šë‹œë‹žë‹Ÿë‹ ë‹Ąë‹Łë‹§ë‹©ë‹Ș닰닱ë‹Č닶닌닜닟댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덱덣"], -["8941","덊덚ëȘ덬덭덯ëČëłë”ë¶ë·ëč",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎱",5,"뎩ëŽȘ뎫뎭"], -["8981","뎼",21,"ë†ë‡ë‰ëŠëëë‘ë’ë“ë–ë˜ëšëœëžëŸëĄëąëŁë„ëŠë§ë©",18,"돜",18,"됑",6,"됙됚됛됝됞됟됡",6,"ëȘ됏",7,"됔",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둹둀둊"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"ë’„ë’Šë’§ë’©ë’Ș뒫뒭",7,"ë’¶ë’žë’ș",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"ë“žë“Ÿë“Ąë“ąë“„ë“§",4,"듼듰ë“Č",5,"ë“č",26,"딖딗딙딚딝"], -["8b41","딞",5,"딊딫",4,"ë”Č딳디딶딷ë”č",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땱",8], -["8b81","땫",52,"ë–ąë–Łë–„ë–Šë–§ë–©ë–Źë–­ë–źë–Żë–Č떶",4,"ë–Ÿë–żë—ë—‚ë—ƒë—…",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똊",5,"똭",6,"똔",5], -["8c81","똻",12,"뙉",26,"뙄뙊뙧뙩",50,"ëšžëšŸëšĄëšąëšŁëš„",5,"뚭뚼뚯뚰ëšČ",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱ë›Č뛳뛔뛶뛷ë›čë›ș"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"ëœȘëœ«ëœ­ëœźëœ±",6,"ëœș뜌",7,"띅띆띇띉띊띋띍",6,"띖",9,"ëĄëąëŁë„ëŠë§ë©",6,"ëČ띎띶",5,"ëŸëżëžëž‚ëžƒëž…",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"ëžȘ랼",5,"랶랷ëžč",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"ëŸźëŸŻëŸ±ëŸČëŸłëŸ”",6,"럟렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"ë Šë §ë ©ë Șë «ë ­",6,"ë ¶ë ș",5,"롁롂롃롅",11,"롒롔",7,"ëĄžëĄŸëĄĄëĄąëĄŁëĄ„",6,"륟륰ëĄČ",5,"ëĄčëĄșëĄ»ëĄœ",7], -["8f41","뱅",7,"뱎",17], -["8f61","ëą ",7,"ëą©",6,"ëą±ëąČ빳빔빶빷ëąč",4], -["8f81","ëąŸëążëŁ‚ëŁ„ëŁ†",5,"룍룎룏룑룒룓룕",7,"룞룠룱",5,"ëŁȘ룫룭룟룯룱",6,"ëŁșëŁŒëŁŸ",5,"뀅",18,"뀙",6,"뀥",26,"ë€Ÿë€żë„ë„‚ë„ƒë„…",6,"넍넎널넒",5], -["9041","ë„šë„›ë„ë„žë„Ÿë„Ą",6,"ë„Ș넏넟",5,"ë„¶ë„·ë„čë„ș넻넜"], -["9061","넟",5,"멆멈멋멌멏",15], -["9081","멟",12,"늟늯늱ëŠČ늳는",6,"늟맀맂",5,"맊맋맍맓",4,"ë§šë§œë§Ÿë§ ë§ąë§Šë§§ë§©ë§Șë§«ë§­",6,"ë§¶ë§»",4,"빂",5,"빉",11,"빖",33,"ëšșëš»ëšœëšŸëšżë©ë©ƒë©„ë©…ë©†"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멊ë©Ș",5], -["9161","ë©Č멳메멶멷ë©č",9,"ëȘ†ëȘˆëȘ‰ëȘŠëȘ‹ëȘ",5], -["9181","ëȘ“",20,"ëȘȘëȘ­ëȘźëȘŻëȘ±ëȘł",4,"ëȘșëȘŒëȘŸ",5,"뫅뫆뫇뫉",14,"뫚",33,"ë«œë«Ÿë«żëŹëŹ‚ëŹƒëŹ…",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","돚ëŹȘ돏",7,"돷ëŹčëŹș돿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"ë­ąë­€",7,"ë­­",4], -["9281","ë­Č",21,"뼉뼊뼋뼍뼎뼏뼑",18,"럄럊럧럩ëźȘ럫럭",6,"럔럶럞",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"ëŻșëŻ»ëŻœëŻŸë°"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡백밣방밹ë°Șë°«ë°Źë°źë°Żë°Čë°łë°”"], -["9361","ë°¶ë°·ë°č",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"ëȆëȇëȉëȊëȍëȏ",4,"ëȖëȘëț",4,"ëČąëČŁëČ„ëČŠëČ©",6,"ëČČëȶ",5,"ëČŸëȿ볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"ëł·ëłčëłșëł»ëłœ"], -["9441","ëłŸ",5,"뮆뮈뮊",5,"뮑뮒뮓뮕",8], -["9461","뮞",5,"뎄",6,"뎭",12], -["9481","ëŽș",5,"딁",6,"딊딋딍딎딏딑",6,"딚",9,"딄딊딧딩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"ë¶„",10,"ë¶±",6,"ë¶č",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"ë·Ș",5,"ë·±"], -["9561","ë·Č뷳뷔뷶뷷ë·č",6,"뾁뾂뾄뾆",5,"뾎뾏뾑뾒뾓"], -["9581","뾕",6,"뾞뾠",35,"ëč†ëč‡ëč‰ëčŠëč‹ëčëč",4,"ëč–ëč˜ëčœëčëčžëčŸëčąëčŁëč„ëčŠëč§ëč©ëč«",4,"ëčČëč¶",4,"ëčŸëčżëșëș‚ëșƒëș…",6,"ëșŽëș’",5,"ëșš",13,"ëș©",14], -["9641","ëșž",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻥뻹뻊",5,"ë»­",8], -["9681","ë»¶",10,"댂",5,"댊",13,"댚댞",33,"뜂뜃뜅뜆뜇뜉",6,"뜒뜓뜔뜖",44], -["9741","럃",16,"럕",8], -["9761","럞",17,"럱",7], -["9781","ëŸč",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿱",89,"ì€œì€Ÿì€ż"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","ììžìŸìĄ",6,"ìȘ",15], -["9881","ìș",21,"삒삓삕삖삗삙",6,"ì‚ąì‚€ì‚Š",5,"ì‚źì‚±ì‚Č삷",4,"삟샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샊샧샩ìƒȘ샫샭",6,"샶샞ìƒș",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"ì„Ąì„ąì„„ì„šì„©ì„Șì„«ì„ź"], -["9941","ì„Čì„łì„Žì„”ì„·ì„șì„»ì„œì„Ÿì„żì…",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"ì…Šì…Ș",5,"셱ì…Čì…łì…”ì…¶ì…·ì…čì…ș셻"], -["9981","ì…Œ",8,"솆",5,"솏솑솒솓솕솗",4,"ì†žì† ì†ąì†Łì†€ì†Šì†§ì†Șì†«ì†­ì†źì†Żì†±",11,"솟",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"ì‡Ąì‡ąì‡Łì‡„ì‡Šì‡§ì‡©",6,"ì‡Č쇎",7,"ì‡Ÿì‡żìˆìˆ‚ìˆƒìˆ…",6,"숎숐숒",5,"ìˆšìˆ›ìˆìˆžìˆĄìˆąìˆŁ"], -["9a41","숀숄숊숧ìˆȘìˆŹìˆźìˆ°ìˆłìˆ”",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"ì‰Ąì‰ąì‰Łì‰€ì‰Š"], -["9a81","쉧",4,"ì‰źì‰Żì‰±ì‰Čì‰łì‰”",6,"쉟슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슊슧슩ìŠȘìŠ«ìŠź",5,"슶슞ìŠș",33,"ì‹žì‹Ÿì‹Ąì‹ąì‹„",5,"ì‹źì‹°ì‹Čì‹łì‹Žì‹”ì‹·ì‹șì‹œì‹Ÿì‹żìŒ",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌊쌧ìŒȘ",8], -["9b61","ìŒł",17,"썆",7], -["9b81","썎",25,"ìȘì«ì­ìźìŻì±ìł",4,"ìș썻썟",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","ì›ììžìĄìŁ",4,"ìȘì«ìŹìź",5,"쏶쏷ìč",5], -["9c61","ìż",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐄",6,"ì­ìźìŻì±ìČìłì”",6,"쐟",9,"쑉",26,"쑊쑧쑩ì‘Ș쑫쑭",6,"쑶쑷쑞ì‘ș",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","ì’Ș",13,"ì’čì’ș쒻쒜",8], -["9d61","쓆",25], -["9d81","쓠",8,"ì“Ș",5,"ì“Čì“łì“”ì“¶ì“·ì“č쓻쓌쓜쓟씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"ì”Șì”«ì”­ì”źì”Żì”±",6,"ì”ș씌씟",5,"ì•†ì•‡ì•‹ì•ì•ì•‘ì•’ì•–ì•šì•›ì•œì•Ÿì•ąì•Łì•„ì•Šì•§ì•©",6,"ì•Č앶",5,"ì•Ÿì•żì–ì–‚ì–ƒì–…ì–†ì–ˆì–‰ì–Šì–‹ì–Žì–ì–’ì–“ì–”"], -["9e41","ì––ì–™ì–šì–›ì–ì–žì–Ÿì–Ą",7,"ì–Ș",9,"얶"], -["9e61","얷ì–șì–ż",4,"엋엍엏엒엓엕엖엗엙",6,"ì—ąì—€ì—Šì—§"], -["9e81","ì—šì—©ì—Șì—«ì—Żì—±ì—Čì—łì—”ì—žì—čì—ș엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옊옧옩ì˜Șì˜«ì˜Żì˜±ì˜Č옶옞ì˜șì˜Œì˜œì˜Ÿì˜żì™‚ì™ƒì™…ì™†ì™‡ì™‰",6,"왒왖",5,"ì™žì™Ÿì™Ą",10,"ì™­ì™źì™°ì™Č",5,"ì™șì™»ì™œì™Ÿì™żìš",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욊"], -["9f41","ìššìšȘ",5,"ìšČìšłìš”ìš¶ìš·ìš»",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"ì›žì›Ÿì›ą",5,"ì›Șì›«ì›­ì›źì›Żì›±ì›Č"], -["9f81","ì›ł",4,"ì›ș웻워웟",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"ìœąìœŁìœ„ìœŠìœ§ìœ©",6,"ìœČ윎윶윞ìœčìœșìœ»ìœŸìœżìì‚ìƒì…",4,"ì‹ìŽìì™ìšì›ììžìŸìĄ",6,"읩ìȘìŹ",7,"읶읷ìčìșì»ìżìž€ìžìž‚ìž†ìž‹ìžŒìžìžìž’ìž“ìž•ìž™ìž›",4,"ìžąìž§",4,"ìžźìžŻìž±ìžČìžłìž”ìž¶ìž·"], -["a041","ìžžìžčìžș잻잟쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟄쟊쟧쟩ìŸȘ쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"ì žì Ÿì Ąì ąì Łì „",6,"ì źì °ì Č",5,"ì čì șì »ì œì Ÿì żìĄ",6,"ìĄŠìĄ‹ìĄŽ",5,"ìĄ•",26,"ìĄČìĄłìĄ”ìĄ¶ìĄ·ìĄčìĄ»",4,"ìą‚ìą„ìąˆìą‰ìąŠìąŽ",5,"ìą•",7,"ìąžìą ìąąìąŁìą€"], -["a141","ìą„ìąŠìą§ìą©",18,"ìąŸìążìŁ€ìŁ"], -["a161","ìŁ‚ìŁƒìŁ…ìŁ†ìŁ‡ìŁ‰ìŁŠìŁ‹ìŁ",6,"ìŁ–ìŁ˜ìŁš",5,"ìŁąìŁŁìŁ„"], -["a181","ìŁŠ",14,"ìŁ¶",5,"ìŁŸìŁżì€ì€‚ì€ƒì€‡",4,"ì€Žă€€ă€ă€‚Â·â€„â€ŠÂšă€ƒÂ­â€•âˆ„ïŒŒâˆŒâ€˜â€™â€œâ€ă€”ă€•ă€ˆ",9,"Â±Ă—Ă·â‰ â‰€â‰„âˆžâˆŽÂ°â€Čâ€łâ„ƒâ„«ïż ïżĄïż„â™‚â™€âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’Â§â€»â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Čâ–œâ–Œâ†’â†â†‘â†“â†”ă€“â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹâˆˆâˆ‹âŠ†âŠ‡âŠ‚âŠƒâˆȘâˆ©âˆ§âˆšïżą"], -["a241","쀐쀒",5,"쀙",18], -["a261","쀭",6,"쀔",18], -["a281","섈",7,"ì„’ì„“ì„•ì„–ì„—ì„™",6,"ì„ąì„€",7,"ì„­ì„źì„Żâ‡’â‡”âˆ€âˆƒÂŽïœžË‡Ë˜ËËšË™ÂžË›ÂĄÂżËâˆźâˆ‘âˆÂ€â„‰â€°â—â—€â–·â–¶â™€â™ â™Ąâ™„â™§â™ŁâŠ™â—ˆâ–Łâ—â—‘â–’â–€â–„â–šâ–§â–Šâ–©â™šâ˜â˜Žâ˜œâ˜žÂ¶â€ â€Ąâ†•â†—â†™â†–â†˜â™­â™©â™Ș♬㉿㈜№㏇ℱ㏂㏘℡€¼"], -["a341","성ì„Čì„łì„”",6,"서",10,"슊슋슍슎슏"], -["a361","슑",6,"슚슜슞",16], -["a381","ìŠŻ",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛",58,"ïżŠïŒœ",32,"ïżŁ"], -["a441","ì§žì§Ÿì§Ąì§Łì§„ì§Šì§šì§©ì§Șì§«ì§źì§Č",5,"ì§șì§»ì§œì§Ÿì§żìšìš‚ìšƒìš„"], -["a461","욅욆욇욊욎",5,"욕욖욗욙",12], -["a481","욊욧욚ìšȘ",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"ì©žì©ą",5,"ì©©ì©Ș"], -["a561","ì©«",17,"쩟",5,"ìȘ…ìȘ†"], -["a581","ìȘ‡",16,"ìȘ™",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"ÎŁ",6], -["a5e1","α",16,"σ",6], -["a641","ìȘš",19,"ìȘŸìȘżì«ì«‚쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"ì«Ą",6], -["a681","쫚쫩ì«Șì««ì«­",6,"ì«”",18,"ìŹ‰ìŹŠâ”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚â”’â”‘â”šâ”™â”–â”•â”Žâ”â”žâ”Ÿâ”Ąâ”ąâ”Šâ”§â”©â”Ș┭┟┱â”Č└┶â”čâ”ș├┟╀╁╃",7], -["a741","ìŹ‹",4,"ìŹ‘ìŹ’ìŹ“ìŹ•ìŹ–ìŹ—ìŹ™",6,"ìŹą",7], -["a761","ìŹȘ",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"ì­„",7,"ăŽ•ăŽ–ăŽ—â„“ăŽ˜ă„ăŽŁăŽ€ăŽ„ăŽŠăŽ™",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎹㎰",9,"㎀",4,"ăŽș",5,"㎐",4,"â„Šă€ăăŽŠăŽ‹ăŽŒă–ă…ăŽ­ăŽźăŽŻă›ăŽ©ăŽȘăŽ«ăŽŹăăă“ăƒă‰ăœă†"], -["a841","ì­­",10,"ì­ș",14], -["a861","ìź‰",18,"ìź",6], -["a881","ìź€",19,"ìźč",11,"ÆÐÂȘÄŠ"], -["a8a6","ÄČ"], -["a8a8","ĿƁ؃ÂșÞƩƊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"œ⅓⅔ŒŸ⅛⅜⅝⅞"], -["a941","ìŻ…",14,"ìŻ•",10], -["a961","ìŻ ìŻĄìŻąìŻŁìŻ„ìŻŠìŻšìŻȘ",18], -["a981","ìŻœ",14,"찎찏찑찒찓찕",6,"ì°žì°Ÿì° ì°Łì°€ĂŠÄ‘Ă°Ä§Ä±ÄłÄžĆ€Ć‚ĂžĆ“ĂŸĂŸĆ§Ć‹Ć‰ăˆ€",27,"⒜",25,"⑮",14,"ÂčÂȳⁿ₁₂₃₄"], -["aa41","ì°„ì°Šì°Șì°«ì°­ì°Żì°±",6,"ì°șì°ż",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"ì±Ąì±ąì±Łì±„ì±§ì±©",6,"ì±±ì±Č"], -["aa81","ì±łì±Žì±¶",29,"ぁ",82], -["ab41","ìȔìȕìȖìȗìȚìțìȝìȞìȟìČĄ",6,"ìČȘìČź",5,"ìȶìČ·ìČč"], -["ab61","ìČșìČ»ìČœ",6,"ìł†ìłˆìłŠ",5,"ìł‘ìł’ìł“ìł•",5], -["ab81","ìł›",8,"ìł„",6,"ìł­ìłźìłŻìł±",12,"ァ",85], -["ac41","ìłŸìłżìŽ€ìŽ‚",5,"쎊쎋쎍쎎쎏쎑",6,"쎚쎜쎞쎟쎠"], -["ac61","ìŽĄìŽąìŽŁìŽ„ìŽŠìŽ§ìŽ©ìŽȘ쎫쎭",11,"ìŽș",4], -["ac81","ìŽż",28,"ì”ì”žì”ŸĐ",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","ì”Ąì”ąì”Łì”„",6,"ì”źì”°ì”Č",5,"ì”č",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","ì¶ ì¶Ąì¶ąì¶Łì¶Šì¶šì¶Ș",5,"ì¶±",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","ì·ą",5,"ì·©ì·Șì·«ì·­ì·źì·Żì·±",6,"ì·ș췌췟",4], -["ae81","잃입잆잇잉잊잋잍",6,"잕잖잗잘잚",5,"ìžąìžŁìž„ìžŠìž§ìž©ìžȘìž«"], -["af41","ìžŹìž­ìžźìžŻìžČ잎잶",19], -["af61","ìčŠ",13,"ìčšìč›ìčìčžìčą",5,"ìčȘìčŹ"], -["af81","ìčź",5,"ìč¶ìč·ìččìčșìč»ìčœ",6,"ìș†ìșˆìșŠ",5,"ìș’ìș“ìș•ìș–ìș—ìș™"], -["b041","ìșš",5,"ìșąìșŠ",5,"ìșź",12], -["b061","ìș»",5,"컂",19], -["b081","컖",13,"컊컧컩ì»Șì»­",6,"ì»¶ì»ș",5,"가각간갇갈갉갊감",7,"같",4,"ê° ê°€ê°Źê°­ê°Żê°°ê°±ê°žê°č갌걀걋걍걔걘걜거걱걎걷걞ê±șêȀêȁêȃêȄêȅêȆêȉêȊêȋêȌêȐêȔêȜêȝêȟêČ êČĄêČšêČ©êČȘêČŹêČŻêȰêČžêČčêČ»êČŒêČœêłêł„êłˆêłŒêł•êł—êł êłĄêł€êł§êłšêłȘêłŹêłŻêł°êł±êłłêł”êł¶êłŒêłœêŽ€êŽ„êŽ†"], -["b141","쌂쌃쌅쌆쌇쌉",6,"쌒쌔쌖",5,"ìŒìŒžìŒŸìŒĄìŒąìŒŁ"], -["b161","쌄",6,"ìŒźìŒČ",5,"ìŒč",11], -["b181","윅",14,"윖윗윙윚윛윝",6,"윊윚ìœȘìœ«ìœŹêŽŒêŽêŽêŽ‘êŽ˜êŽœêŽ êŽ©êŽŹêŽ­êŽŽêŽ”êŽžêŽŒê”„ê”…ê”‡ê”‰ê”ê””ê”˜ê”Ąê”Łê”Źê”­ê”°ê”łê”Žê””ê”¶ê”»ê”Œê”œê”żê¶ê¶‚ê¶ˆê¶‰ê¶Œê¶ê¶œê¶ê¶€ê¶·ê·€ê·ê·„ê·ˆê·ê·‘ê·“ê·œê· ê·€ê·žê·čê·Œê·żêž€êžêžˆêž‰êž‹êžêž”êž°êž±êžŽêž·êžžêžșêč€êčêčƒêč…êč†êčŠêčŒêčêčŽêčêč”êč–êčœêčêčŸêč êčĄêč„êčšêč©êčŹêč°êčž"], -["b241","ìœ­ìœźìœŻìœČìœłìœ”ìœ¶ìœ·ìœč",6,"쟁쟂쟃쟄쟆",5,"쟍"], -["b261","쟎",18,"ìŸą",5,"쟩"], -["b281","ìŸȘ",5,"쟱",18,"ìż…",6,"êččêč»êčŒêčœêș„êș…êșŒêșŒêșœêșŸê»€ê»„ê»Œê»ê»ê»ê»‘ê»˜ê»™ê»œê»šê»«ê»­ê»Žê»žê»ŒêŒ‡êŒˆêŒêŒêŒŹêŒ­êŒ°êŒČêŒŽêŒŒêŒœêŒżêœêœ‚êœƒêœˆêœ‰êœêœœêœêœ€êœ„êœčꟀꟄꟈꟐꟑꟕꟜ꟞êŸčêŸŒêż€êż‡êżˆêż‰êż‹êżêżŽêż”êżœêżšêż©êż°êż±êżŽêżžë€€ë€ë€„ë€Œë€ë€”ë€œë€ë€šë„ë…ëˆëŠëŒëŽë“ë”ë•ë—ë™"], -["b341","ìżŒ",19,"ìżąìżŁìż„ìżŠìż§ìż©"], -["b361","ìżȘ",5,"ìżČìżŽìż¶",5,"ìżœìżŸìżżí€í€‚í€ƒí€…",5], -["b381","퀋",5,"퀒",5,"퀙",19,"ëëŒëœë‚€ë‚„ë‚Œë‚ë‚ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚Ąë‚ąë‚šë‚©ë‚«",4,"ë‚±ë‚łë‚Žë‚”ë‚žë‚Œëƒ„ëƒ…ëƒ‡ëƒˆëƒ‰ëƒëƒ‘ëƒ”ëƒ˜ëƒ ëƒ„ë„ˆë„‰ë„‹ë„Œë„ë„’ë„“ë„˜ë„™ë„›ë„œë„ë„Łë„€ë„„ë„šë„Źë„Žë„”ë„·ë„žë„č녀녁년녈념녑녔녕녘녜녠녾ë…č녌놀놂놈놉놋농높놓놔놘놜놚뇌뇐뇔뇜뇝"], -["b441","퀼",5,"퀶퀷í€čí€ș퀻퀜",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큥",10,"큟큯"], -["b481","큱íČ큳큔",6,"íŸíżí‚€í‚‚",18,"ë‡Ÿë‡šë‡©ë‡Źë‡°ë‡čë‡»ë‡œëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆŽëˆŒë‰˜ë‰œë‰ ë‰šë‰©ë‰Žë‰”ë‰ŒëŠ„ëŠ…ëŠ‰ëŠëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠĄëŠŁëŠ„ëŠŠëŠȘëŠŹëŠ°ëŠŽë‹ˆë‹‰ë‹Œë‹ë‹’ë‹˜ë‹™ë‹›ë‹ë‹ąë‹€ë‹„ë‹Šë‹šë‹«",4,"닳닎닔닷",4,"ë‹żëŒ€ëŒëŒ„ëŒˆëŒëŒ‘ëŒ“ëŒ”ëŒ•ëŒœë”ë•ë–ë˜ë›ëœëžëŸë€ë„"], -["b541","킕",14,"킊킧킩í‚Ș킫킭",5], -["b561","킳킶킞í‚ș",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","íƒ›íƒžíƒŸíƒĄíƒąíƒŁíƒ„",6,"탟íƒČ",5,"íƒč",11,"ë§ë©ë«ëźë°ë±ëŽëžëŽ€ëŽëŽƒëŽ„ëŽ…ëŽŒëŽëŽ”ëŽ ëŽĄëŽšëŽŹë„ë…ëˆë‹ëŒëŽëë”ë•ë—ë™ë›ëë ë€ëšëŒëë˜ëœë ëšë©ë«ëŽë‘ë‘‘ë‘”ë‘˜ë‘ ë‘Ąë‘Łë‘„ë‘Źë’€ë’ˆë’ë’€ë’šë’Źë’”ë’·ë’čë“€ë“„ë“ˆë“ë“•ë“œë“ë“ ë“Łë“€ë“Šë“Źë“­ë“Żë“±ë“žë””ë”•ë”˜ë”›ë”œë”€ë”„ë”§ë”šë”©ë”Ș따딱딎딞"], -["b641","턅",7,"턎",17], -["b661","턠",15,"í„Č턳턔턶턷í„č턻턌턜턟"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텱",5,"텩í…Șí…«í…­ë•€ë•ë•ƒë•„ë•…ë•‹ë•Œë•ë•ë•”ë•œë•ë•Ÿë• ë•Ąë– ë–Ąë–€ë–šë–Șë–«ë–°ë–±ë–łë–Žë–”ë–»ë–Œë–œë—€ë—„ë—Œë—ë—ë—ë—‘ë—˜ë—Źë˜ë˜‘ë˜”ë˜˜ë˜„ë˜Źë˜Žë™ˆë™€ë™šëšœëšëš ëš€ëš«ëšŹëš±ë›”ë›°ë›Žë›žëœ€ëœëœ…ëœšëœ©ëœŹëœŻëœ°ëœžëœčëœ»ë„ëˆëŒë”ë•ë ë€ëšë°ë±ëłë”ëŒëœëž€ëž„ëžŒëžëžëžëž‘ëž’ëž–ëž—"], -["b741","텼",13,"í…œ",6,"톅톆톇톉톊"], -["b761","톋",20,"톹톣톄톊톧"], -["b781","톩",6,"í†Č톎톶톷톞í†čí†»í†œí†Ÿí†żí‡",14,"ëž˜ëž™ëžœëž ëžšëž©ëž«ëžŹëž­ëžŽëž”ëžžëŸ‡ëŸ‰ëŸŹëŸ­ëŸ°ëŸŽëŸŒëŸœëŸżë €ë ë ‡ë ˆë ‰ë Œë ë ˜ë ™ë ›ë ë €ë „ë šë Źë Žë ”ë ·ë žë čëĄ€ëĄ„ëĄ‘ëĄ“ëĄœëĄëĄ ëĄ€ëĄŹëĄ­ëĄŻëĄ±ëĄžëĄŒëąëąšëą°ëąŽëąžëŁ€ëŁëŁƒëŁ…ëŁŒëŁëŁ”ëŁëŁŸëŁĄëŁšëŁ©ëŁŹëŁ°ëŁžëŁčëŁ»ëŁœë€„ë€˜ë€ ë€Œë€œë„€ë„„ë„Œë„ë„‘ë„˜ë„™ë„œë„ ë„šë„©"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇔퇶퇷í‡č",13], -["b881","툈툊",5,"툑",24,"ë„«ë„­ë„Žë„”ë„žë„ŒëŠ„ëŠ…ëŠ‡ëŠ‰ëŠŠëŠëŠŽëŠŹëŠ­ëŠ°ëŠŽëŠŒëŠœëŠżë§ë§ˆë§‰ë§Œë§Ž",4,"ë§˜ë§™ë§›ë§ë§žë§Ąë§Łë§€ë§„ë§šë§Źë§Žë§”ë§·ë§žë§čë§ș빀빁빈빕빾ëšč뚌멀멂멈멉멋멍멎멓메멕멘멜멀멄멧멚멩며멱멎멞ëȘƒëȘ„ëȘ…ëȘ‡ëȘŒëȘšëȘ©ëȘ«ëȘŹëȘ°ëȘČëȘžëȘčëȘ»ëȘœë«„뫈뫘뫙뫌"], -["b941","íˆȘ툫툟툯툱íˆČ툳툔",6,"툟퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉄퉊퉧퉚"], -["b981","퉩",22,"íŠ‚íŠƒíŠ…íŠ†íŠ‡íŠ‰íŠŠíŠ‹íŠŒëŹ€ëŹ„ëŹëŹëŹ‘ëŹ˜ëŹœëŹ ëŹ©ëŹ«ëŹŽëŹ”ëŹ¶ëŹžëŹ»ëŹŒëŹœëŹŸë­„ë­…ë­‡ë­‰ë­ë­ë­ë­”ë­˜ë­Ąë­Łë­ŹëźˆëźŒëźëź€ëźšëźŹëźŽëź·ëŻ€ëŻ„ëŻˆëŻëŻ“ëŻžëŻčëŻŒëŻżë°€ë°‚ë°ˆë°‰ë°‹ë°Œë°ë°ë°‘ë°”",4,"받",4,"밀밄밧방밭배백밎밞뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝ëȄëȅëȈëȋëȌëȎëȔëȕëȗ"], -["ba41","튍튎튏튒튓튔튖",5,"íŠíŠžíŠŸíŠĄíŠąíŠŁíŠ„",6,"튭"], -["ba61","튼튯튰íŠČ",5,"íŠș튻튜튟틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틩",9,"í‹Č틳틔틶틷í‹čí‹șëșëȚëČ ëČĄëČ€ëȧëČšëȰëȱëČłëČŽëČ”ëČŒëČœëł€ëł„ëłëłëłëł‘ëł•ëł˜ëłœëłŽëł”ëł¶ëłžëłŒëŽ„ëŽ…ëŽ‡ëŽ‰ëŽëŽ”ëŽ€ëŽŹë”€ë”ˆë”‰ë”Œë”ë”˜ë”™ë”€ë”šë¶€ë¶ë¶„ë¶‡ë¶ˆë¶‰ë¶Šë¶ë¶‘ë¶“ë¶•ë¶™ë¶šë¶œë¶€ë¶°ë¶žë·”ë·•ë·˜ë·œë·©ë·°ë·Žë·žëž€ëžƒëž…ëžŒëžëžëž”ëžœëžëžŸëč„ëč…ëčˆëčŒëčŽëč”ëč•ëč—ëč™ëčšëč›ëč ëčĄëč€"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팱팣"], -["bb61","팀팊팧íŒȘíŒ«íŒ­íŒźíŒŻíŒ±",6,"íŒș팟",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"ëčšëčȘëč°ëč±ëčłëčŽëč”ëč»ëčŒëčœëș€ëș„ëșŒëșëșëșëș‘ëș˜ëș™ëșšë»ë»‘ë»”ë»—ë»˜ë» ë»Łë»€ë»„ë»ŹëŒëŒˆëŒ‰ëŒ˜ëŒ™ëŒ›ëŒœëŒëœ€ëœëœ„ëœˆëœëœ‘ëœ•ëŸ”ëŸ°ëż…ëżŒëżëżëż”ëżœëżŸëżĄì€Œì‘ì˜ìœì ìšì©ì‚ì‚‘ì‚”ì‚˜ì‚ ì‚Ąì‚Łì‚„ì‚Źì‚­ì‚Żì‚°ì‚łì‚Žì‚”ì‚¶ì‚Œì‚œì‚żìƒ€ìƒìƒ…ìƒˆìƒ‰ìƒŒìƒìƒ˜ìƒ™ìƒ›ìƒœìƒìƒ€"], -["bc41","íȘ",17,"íŸíżíŽíŽ‚íŽƒíŽ…íŽ†íŽ‡"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"íŽȘ펬펼"], -["bc81","펯",4,"펔펶펷íŽčíŽș펻펜",6,"폆폇폊",5,"폑",5,"ìƒ„ìƒšìƒŹìƒŽìƒ”ìƒ·ìƒč섀섄섈섐섕서",4,"ì„Łì„€ì„Šì„§ì„Źì„­ì„Żì„°ì„±ì„¶ì„žì„čì„Œì…€ì…ˆì…‰ì…‹ì…Œì…ì…”ì…•ì…˜ì…œì…€ì…„ì…§ì…šì…©ì…°ì…Žì…žì†…ì†Œì†ì†Žì†ì†”ì†–ì†œì†ì†Ÿì†Ąì†„ì†šì†©ì†Źì†°ì†œì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡€ì‡šì‡°ì‡±ì‡łì‡Œì‡œìˆ€ìˆ„ìˆŒìˆìˆìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆšìˆ©ìˆ«ìˆ­"], -["bd41","폗폙",7,"íąí€",7,"íźíŻí±íČíłí”í¶í·"], -["bd61","폞íčíș폻폟퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"ìˆŻìˆ±ìˆČìˆŽì‰ˆì‰ì‰‘ì‰”ì‰˜ì‰ ì‰„ì‰Źì‰­ì‰°ì‰Žì‰Œì‰œì‰żìŠìŠˆìŠ‰ìŠìŠ˜ìŠ›ìŠìŠ€ìŠ„ìŠšìŠŹìŠ­ìŠŽìŠ”ìŠ·ìŠčì‹œì‹ì‹ ì‹Łì‹€ì‹«ì‹Źì‹­ì‹Żì‹±ì‹¶ì‹žì‹čì‹»ì‹ŒìŒ€ìŒˆìŒ‰ìŒŒìŒìŒ“ìŒ”ìŒ•ìŒ˜ìŒœìŒ€ìŒ„ìŒšìŒ©ì…ìšì©ìŹì°ìČ썞ìčìŒìœìŽ„ìŽˆìŽŒì€ì˜ì™ìœìŸì ìąìšì©ì­ìŽì”ìžìˆìì€ìŹì°"], -["be41","퐞",7,"푁푂푃푅",14], -["be61","푔",7,"í‘í‘ží‘Ÿí‘Ąí‘ąí‘Łí‘„",7,"푟푰푱í‘Č"], -["be81","푳",4,"í‘ș푻표푟풁풃",4,"풊풌풎",5,"풕",8,"ìŽìŒìœì‘ˆì‘€ì‘„ì‘šì‘Źì‘Žì‘”ì‘č쒀쒔쒜쒞쒌쓩쓰쓱쓎쓞ì“șì“żì”€ì”ì”Œì”ì””ì”œì”šì”©ì”Źì”°ì”žì”čì”»ì”œì•„ì•…ì•ˆì•‰ì•Šì•Œì•ì•Žì•“ì•”ì••ì•—ì•˜ì•™ì•ì•žì• ì•Ąì•€ì•šì•°ì•±ì•łì•Žì•”ì•Œì•œì–€ì–„ì–‡ì–Œì–ì–ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–Žì–”ì–žì–č얻얌얜얟엄",6,"엌엎"], -["bf41","풞",10,"í’Ș",14], -["bf61","í’č",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩í“Ș퓫퓭퓟퓯퓱",6,"í“čí“șí“Œì—ì—‘ì—”ì—˜ì— ì—Ąì—Łì—„ì—Źì—­ì—źì—°ì—Žì—¶ì—·ì—Œ",5,"ì˜…ì˜†ì˜‡ì˜ˆì˜Œì˜ì˜˜ì˜™ì˜›ì˜œì˜€ì˜„ì˜šì˜Źì˜­ì˜źì˜°ì˜łì˜Žì˜”ì˜·ì˜čì˜»ì™€ì™ì™„ì™ˆì™ì™‘ì™“ì™”ì™•ì™œì™ì™ ì™Źì™Żì™±ì™žì™č왌욀욈욉욋욍요욕욘욜욀욄욧용우욱욎욞ìščìšșì›€ì›ì›ƒì›…ì›Œì›ì›ì›”ì›œì›ì› ì›Ąì›š"], -["c041","퓟",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픾í”čí”șí”»í”Ÿí”żí•í•‚í•ƒí•…",6,"핎핐핒",5,"í•ší•›í•í•ží•Ÿí•Ąí•ąí•Łì›©ì›Źì›°ì›žì›čì›œìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœĄìœ€ìœšìœ°ìœ±ìœłìœ”ìœ·ìœŒìœœì€ì„ìŠìŒììì‘",7,"ìœì ìšì«ìŽì”ìžìŒìœìŸìžƒìž„ìž…ìž‡ìžˆìž‰ìžŠìžŽìžìž‘ìž”ìž–ìž—ìž˜ìžšìž ìžĄìžŁìž€ìž„ìžŠìžŹìž­ìž°ìžŽìžŒìžœìžżìŸ€ìŸìŸˆìŸ‰ìŸŒìŸŽìŸìŸ˜ìŸìŸ€ìŸšìŸŹì €ì ì „ì ˆì Š"], -["c141","핀핊핧í•Ș핬핼",5,"핶핷í•čí•ș핻한",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햩햧"], -["c181","햹",31,"ì ì ‘ì “ì •ì –ì œì ì  ì €ì Źì ­ì Żì ±ì žì ŒìĄ€ìĄˆìĄ‰ìĄŒìĄìĄ”ìĄ°ìĄ±ìĄŽìĄžìĄșìą€ìąìąƒìą…ìą†ìą‡ìą‹ìąŒìąìą”ìąìąŸìąĄìąšìąŒìąœìŁ„ìŁˆìŁŒìŁ”ìŁ•ìŁ—ìŁ™ìŁ ìŁĄìŁ€ìŁ”ìŁŒìŁœì€€ì€„ì€…ì€†ì€Œì€ì€ì€‘ì€˜ì€Źì€Žì„ì„‘ì„”ì„˜ì„ ì„Ąì„Łì„Źì„°ì„Žì„ŒìŠˆìŠ‰ìŠŒìŠìŠ˜ìŠ™ìŠ›ìŠì§€ì§ì§„ì§‡ì§ˆì§Šì§ì§‘ì§“"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"í—Ší—§í—©í—Șí—«í—­í—ź"], -["c261","헯",4,"í—¶í—ží—ș",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"í˜í˜ží˜Ÿí˜Ąí˜ąí˜Łí˜„",7,"혟",9,"í˜șí˜»ì§•ì§–ì§™ì§šì§œì§ì§ ì§ąì§€ì§§ì§Źì§­ì§Żì§°ì§±ì§žì§čì§Œìš€ìšˆìš‰ìš‹ìšŒìšìš”ìš˜ìš©ì©Œì©ì©ì©”ì©œì©ì©Ÿì© ì©Ąì©šì©œìȘ„ìȘ˜ìȘŒìȘœì«€ì«„ì«Œì«ì«ì«‘ì«“ì«˜ì«™ì« ì«Źì«ŽìŹˆìŹìŹ”ìŹ˜ìŹ ìŹĄì­ì­ˆì­‰ì­Œì­ì­˜ì­™ì­ì­€ì­žì­čìźœìźžìŻ”ìŻ€ìŻ§ìŻ©ì°Œì°ì°ì°”ì°œì°ì°Ąì°ąì°§ì°šì°©ì°Źì°źì°°ì°žì°čì°»"], -["c341","í˜œí˜Ÿí˜żí™í™‚í™ƒí™„í™†í™‡í™Ší™Œí™Ží™í™í™’í™“í™–í™—í™™í™ší™›í™",4], -["c361","홱",4,"홹í™Ș",5,"í™Č홳화",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횱",5,"횩íšȘ찌찜찟채책챈챌챔챕챗챘챙챠챀챊챚챰챔ìȘìșìȜìČ ìČšìČ©ìČ«ìČŹìČ­ìČŽìČ”ìČžìČŒìł„ìł…ìł‡ìł‰ìłìł”ìł€ìłŹìł°ìŽìŽˆìŽ‰ìŽŒìŽìŽ˜ìŽ™ìŽ›ìŽìŽ€ìŽšìŽŹìŽčì”œì” ì”€ì”Źì”­ì”Żì”±ì”žì¶ˆì¶”ì¶•ì¶˜ì¶œì¶€ì¶„ì¶§ì¶©ì¶°ì·„ì·Œì·ì·šì·Źì·°ì·žì·čì·»ì·œìž„ìžˆìžŒìž”ìž™ìž ìžĄìž€ìžšìž°ìž±ìžłìž”"], -["c441","횫횭횟횯횱",7,"íšș회",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훥훹훣후훊훧훩",4], -["c481","훟훯훱í›Č훳훎훶",5,"í›Ÿí›żíœíœ‚íœƒíœ…",11,"휒휓휔ìč˜ìč™ìčœìčŸìč ìčĄìčšìč©ìč«ìč­ìčŽìč”ìčžìčŒìș„ìș…ìș‡ìș‰ìșìș‘ìș”ìș˜ìș ìșĄìșŁìș€ìș„ìșŹìș­ì»ì»€ì»„ì»šì»«ì»Źì»Žì»”ì»·ì»žì»čìŒ€ìŒìŒ„ìŒˆìŒìŒ‘ìŒ“ìŒ•ìŒœìŒ ìŒ€ìŒŹìŒ­ìŒŻìŒ°ìŒ±ìŒžìœ”ìœ•ìœ˜ìœœìœ€ìœ„ìœ§ìœ©ìœ°ìœ±ìœŽìœžìŸ€ìŸ…ìŸŒìŸĄìŸšìŸ°ìż„ìż ìżĄìż€ìżšìż°ìż±ìżłìż”ìżŒí€€í€„í€‘í€˜í€­í€Ží€”í€ží€Œ"], -["c541","휕휖휗휚휛휝휞휟휡",6,"íœȘ휬휼",5,"휶휷íœč"], -["c561","íœș휻휜",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","íŸíąí€íŠí§íšíȘí«í­íźíŻí±íČíłí”",6,"íŸíżíž€íž‚",5,"ížŠíž‹í„í…í‡í‰íí”í˜í íŹí­í°íŽíŒíœí‚í‚€í‚„í‚ší‚Źí‚Ží‚”í‚·í‚číƒ€íƒíƒ„íƒˆíƒ‰íƒíƒ‘íƒ“íƒ”íƒ•íƒœíƒíƒ íƒ€íƒŹíƒ­íƒŻíƒ°íƒ±íƒží„í„°í„±í„Ží„ží„șí…€í…í…ƒí…„í……í…Œí…í…í…”í…œí…í…Ÿí…Ąí…ší…Źí…Œí†„í†ˆí† í†Ąí†€í†ší†°í†±í†łí†”í†șí†Œí‡€í‡˜í‡Ží‡žíˆ‡íˆ‰íˆíˆŹíˆ­íˆ°íˆŽíˆŒíˆœíˆżí‰í‰ˆí‰œ"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","í‰€íŠ€íŠíŠ„íŠˆíŠíŠ‘íŠ•íŠœíŠ íŠ€íŠŹíŠ±íŠžíŠčíŠŒíŠżí‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹€í‹„í‹°í‹±í‹Ží‹žíŒ€íŒíŒƒíŒ…íŒŒíŒíŒŽíŒíŒ”íŒ–íŒœíŒíŒŸíŒ íŒĄíŒ„íŒšíŒ©íŒŹíŒ°íŒžíŒčíŒ»íŒŒíŒœí„í…íŒíœíŽ€íŽ„íŽŒíŽíŽíŽíŽ‘íŽ˜íŽ™íŽœíŽ íŽšíŽ©íŽ«íŽ­íŽŽíŽžíŽŒí„í…íˆí‰íí˜íĄíŁíŹí­í°íŽíŒíœíżí"], -["c7a1","íˆíí‘€í‘„í‘œí‘ í‘€í‘­í‘Żí‘ží‘čí‘Œí‘żí’€í’‚í’ˆí’‰í’‹í’í’”í’©í“Œí“í“”í“œí“Ÿí“ší“Źí“°í“ží“»í“œí”„í”ˆí”Œí””í”•í”—í”Œí”œí•€í•„í•Œí•í•í•‘í•˜í•™í•œí• í•„í•ší•©í•«í•­í•Ží•”í•ží•Œí–„í–…í–‡í–ˆí–‰í–í–„í—ˆí—‰í—Œí—í—’í—˜í—™í—›í—í—€í—„í—ší—Źí—Ží—”í—·í—č혀혁현혈혐협혓혔형혜혠"], -["c8a1","혀혭혞í˜čí˜Œí™€í™…í™ˆí™‰í™‹í™í™‘í™”í™•í™˜í™œí™§í™©í™°í™±í™Žíšƒíš…íšŒíšíšíš”íšíšŸíšĄíššíšŹíš°íščíš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›€í›ší›°í›”í›Œí›œíœ€íœ„íœ‘íœ˜íœ™íœœíœ íœšíœ©íœ«íœ­íœŽíœ”íœžíœŒí„í‡í‰íí‘í”í–í—í˜í™í íĄíŁí„í©íŹí°íŽíŒíœížížˆíž‰ížŒížíž˜íž™íž›íž"], -["caa1","äŒœäœłć‡ćƒčćŠ ćŻć‘”ć“„ć˜‰ć«ćź¶æš‡æž¶æž·æŸŻæ­Œç‚ç—‚çšŒè‹›èŒ„èĄ—èąˆèš¶èłˆè·è»»èżŠé§•ćˆ»ćŽć„æȘæ…€æźŒçè„šèŠșè§’é–ŁäŸƒćˆŠćąŸć„žć§ŠćčČćč过‡æ€æ†æŸŹæĄżæŸ—ç™Žçœ‹çŁ”çšˆç«żç°Ąè‚è‰źè‰±è««é–“äč«ć–æ›·æžŽçąŁç«­è‘›è€èŽéžšć‹˜ćŽć Șć”Œæ„Ÿæ†ŸæˆĄæ•ąæŸ‘æ©„æž›ç”˜ç–łç›Łçž°çŽșé‚Żé‘‘é‘’éŸ•"], -["cba1","挣ćČŹç”Čèƒ›é‰€é–˜ć‰›ć ˆć§œćȡ殗ćș·ćŒșćœŠæ…·æ±Ÿç•șç–†çł ç”łç¶±çŸŒè…”èˆĄè–‘è„èŹ›é‹Œé™é±‡ä»‹ä»·ć€‹ć‡±ćĄæ„·æ„Ÿæ…šæ”čæ§ȘæŒ‘ç–„çš†ç›–çź‡èŠ„è“‹ï€€éŽ§é–‹ć–€ćźąć‘ï€çČłçŸčé†”ć€šćŽ»ć±…ć·šæ‹’æźæ“šæ“§æž ç‚Źç„›è·èžžï€‚éœé‰…é‹žäčŸä»¶ć„ć·Ÿć»ș愆愗腱虔èč‡é”éš«äčžć‚‘æ°æĄ€ć„‰ćŠćŠ’æȘą"], -["cca1","çžŒéˆé»”ćŠ«æ€ŻèżČćˆæ†©æ­æ“Šæ ŒæȘ„æż€è†ˆèŠĄéš”ć …ç‰œçŠŹç”„ç”čçč­è‚©èŠ‹è­ŽéŁé”‘æŠ‰æ±ș朔甐çŒșèšŁć…Œæ…ŠçźèŹ™é‰—éŽŒäșŹäż“ć€žć‚Ÿć„†ć‹ć‹ćżć°ćąƒćșšćŸ‘æ…¶æ†Źæ“Žæ•Źæ™Żæš»æ›Žæą—æ¶‡ç‚…çƒ±ç’Ÿç’„ç“Šç—™çĄŹçŁŹç«Ÿç«¶ç”…ç¶“è€•è€żè„›èŽ–è­ŠèŒ•é€•éĄé ƒé žé©šéŻšäż‚ć•“ć șć„‘ć­Łć±†æ‚žæˆ’æĄ‚æą°"], -["cda1","æŁšæșȘç•Œç™žçŁŽçšœçł»çč«çčŒèšˆèȘĄè°żéšŽé·„ć€ć©ć‘Šć‘±ć›ș槑歀氻ćș«æ‹·æ”·æ•…æ•Čæš æžŻæ§æČœç—ŒçšçŸçšżçŸ”è€ƒè‚Ąè†è‹Šè‹œè°è—è ±èąŽèȘ„ï€ƒèŸœéŒźé›‡éĄ§é«˜éŒ“ć“­æ–›æ›Čæąç©€è°·é” ć›°ć€ćŽ‘æ˜†æą±æŁæ»ŸçšèąžéŻ€æ±šï€„éȘšäŸ›ć…Źć…±ćŠŸć­”ć·„恐恭拱控攻珙ç©șèšŁèȱ鞏äžČćŻĄæˆˆæžœç“œ"], -["cea1","科菓èȘ‡èȘČè·šéŽé‹éĄ†ć»“æ§šè—żéƒ­ï€…ć† ćź˜ćŻŹæ…ŁæŁșæŹŸçŒçŻç“˜çźĄçœè…è§€èČ«é—œé€šćˆźææ‹Źé€‚äŸŠć…‰ćŒĄćŁ™ć»Łæ› æŽžç‚šç‹‚ç–ç­èƒ±é‘›ćŠæŽ›çœ«äč–悀楊棞æ€Șæ„§æ‹æ§é­ćźçŽ˜è‚±èœŸäș€ćƒ‘ć’Źć–Źćʌ㶠㷧æ”Șæ•Žæ Ąæ©‹ç‹ĄçšŽçŸŻç”žçżčè† è•Žè›ŸèŒƒèœŽéƒŠé€ƒé©•éź«äž˜äč…äčä»‡äż±ć…·ć‹Ÿ"], -["cfa1","ć€ćŁć„ć’Žć˜”ć”ćžąćŻ‡ć¶‡ć»æ‡Œæ‹˜æ•‘æžžæŸ©æ§‹æ­æŻ†æŻŹæ±‚æșçžç‹—çŽ–çƒçžżçŸ©ç©¶ç”żè€‰è‡Œèˆ…èˆŠè‹ŸèĄąèŹłèłŒè»€é€‘é‚±é‰€éŠ¶é§’é©…éł©é·—éŸœćœ‹ć±€èŠéž éž«éșŽć›çȘ˜çŸ€èŁ™è»éƒĄć €ć±ˆæŽ˜çȘŸćźźćŒ“ç©čçȘźèŠŽèșŹć€Šćˆžć‹žć·ćœˆæ‹łæČæŹŠæ·ƒçœ·ćŽ„ç—è•šèč¶é—•æœș櫃朰詭軌鄋晷歞èČŽ"], -["d0a1","éŹŒï€‡ć«ćœ­ć„Žæ†æ§»çȘ硅çȘșç«…çłŸè‘”èŠè”łé€”é–šć‹»ć‡ç•‡ç­ èŒéˆžï€ˆæ©˜ć…‹ć‰‹ćŠ‡æˆŸæŁ˜æ„”éš™ćƒ…ćŠ€ć‹€æ‡ƒæ–€æ čæ§żç‘Ÿç­‹èŠč菫èŠČèŹčèż‘é„‰ï€‰ä»ŠćŠ—æ“’æ˜‘æȘŽçŽçŠçŠœèŠ©èĄŸèĄżè„Ÿï€ŠéŒŠäŒ‹ćŠæ€„æ‰±æ±Č玚甊äș˜ć…ąçŸœè‚ŻäŒäŒŽć…¶ć†€ć—œć™šćœ»ćŸșćŸŒć€”ć„‡ćŠ“ćŻ„ćȐ掎深ćčŸćżŒæŠ€æ——æ—Ł"], -["d1a1","æœžæœŸæžæŁ‹æŁ„æ©ŸæŹșæ°Łæ±œæČ‚淇玘琊çȘç’‚ç’Łç•žç•żçąçŁŻç„ç„‡ç„ˆç„ș缕简ç¶șçŸˆè€†è€­è‚Œèš˜è­è±ˆè”·éŒĄéŒ€éŁąé„‘éšŽéšé©„éș’ç·Šäœ¶ć‰æ‹źæĄ”é‡‘ć–«ć„șï€‹ï€Œćšœæ‡Šï€æ‹æ‹żï€Ž",5,"é‚Łï€”",4,"è«Ÿï€™ï€šï€›ï€œæš–ï€ç…–ï€žï€Ÿé›Łï€ ææșć—ï€Ąæžæ„ æčłï€ąç”·ï€Łï€€ï€„"], -["d2a1","玍èĄČć›Šćš˜ï€š",4,"äčƒï€­ć…§ć„ˆæŸ°è€ï€źć„łćčŽæ’šç§Šćż”æŹæ‹ˆæ»ćŻ§ćŻ—ćŠȘï€Żć„ŽćŒ©æ€’ï€°ï€±ï€Čç‘™ï€ł",5,"駑ï€č",10,"æżƒï„„ï„…è†żèŸČæƒ±ï„†ï„‡è…Šï„ˆï„‰ć°żï„Š",7,"ć«©èš„æ»çŽï„’",5,"èƒœï„˜ï„™ć°Œæł„ćŒżæșșć€šèŒ¶"], -["d3a1","äžčäș¶äœ†ć–źćœ˜ćŁ‡ćœ–æ–·æ—ŠæȘ€æź”æčçŸ­ç«Żç°žç·žè›‹èą’é„Č鍛撻柟çș疾達敖杍æ†șæ“”æ›‡æ·Ąæč›æœ­æŸč痰聃膜蕁芃談譚錟æČ“ç•“ç­”èžéć”ć ‚ćĄ˜ćčąæˆ‡æ’žæŁ ç•¶çł–èžłé»šä»Łćžˆćźć€§ć°ćČ±ćž¶ćŸ…æˆŽæ“ĄçŽłè‡șèą‹èČžéšŠé»›ćź…ćŸ·æ‚łć€’ćˆ€ćˆ°ćœ–ć ”ćĄ—ć°Žć± ćł¶ć¶‹ćșŠćŸ’æ‚ŒæŒ‘æŽ‰æ—æĄƒ"], -["d4a1","æŁčæ«‚æ·˜æžĄæ»”æż€ç‡Ÿç›œçčçŠ±çš»è„èŠ©èł­è·łèčˆé€ƒé€”é“éƒœéé™¶éŸœæŻ’ç€†ç‰˜çŠąçšçŁçŠżçŻ€çș›èź€ć੿ƒ‡æ•Šæ—œæšŸæČŒç„žç‡‰è±šé “äč­çȘä»ć†Źć‡ć‹•ćŒæ†§æ±æĄæŁŸæŽžæœŒç–Œçžłç«„èƒŽè‘ŁéŠ…ć…œæ–—æœæž“ç—˜ç«‡èłï„šè±†é€—é ­ć±Żè‡€èŠšééŻéˆćŸ—ć¶æ©™ç‡ˆç™»ç­‰è—€èŹ„é„§éš°ć–‡æ‡¶ï„›ç™©çŸ…"], -["d5a1","è˜żèžșèŁžé‚ï„œæŽ›çƒ™çžç”Ąèœï„é…Ș駱äș‚ć”æŹ„æŹ’ç€Ÿçˆ›è˜­éžžć‰ŒèŸŁć”æ“„æ”ŹæŹ–æż«ç±ƒçșœè—è„€èŠœæ‹‰è‡˜è Ÿć»Šæœ—æ”Șç‹Œç…ç‘Żèž‚éƒžäŸ†ćŽćŸ èŠć†·æŽ ç•„äșźć€†ć…©ć‡‰æąæš‘çČźçČ±çł§è‰Żè«’èŒ›é‡äŸ¶ć„·ć‹”ć‘‚ć»Źæ…źæˆŸæ—…æ«šæżŸç€Șè—œè Łé–­é©ąé©Șéș—é»ŽćŠ›æ›†æ­·ç€ç€«èœąé‚æ†æˆ€æ”ŁæŒŁ"], -["d6a1","ç…‰ç’‰ç·ŽèŻè“źèŒŠé€ŁéŠć†œćˆ—ćŠŁæŽŒçƒˆèŁ‚ć»‰æ–‚æźźæż‚ç°Ÿç”ä»€äŒ¶ć›čćČșć¶ș怜çŽČçŹ­çŸšçżŽè†é€žéˆŽé›¶éˆé ˜éœĄäŸ‹æŸ§çŠźé†Žéš·ć‹žï„ æ’ˆæ“„æ«“æœžç€˜çˆç›§è€è˜†è™œè·ŻèŒ…éœČé­Żé·șéč”çąŒç„żç¶ è‰éŒ„éčżéș“è«–ćŁŸćŒ„æœ§ç€§ç“ç± èŸć„Ąç€šç‰ąçŁŠèł‚èłšèłŽé›·äș†ćƒšćŻźć»–æ–™ç‡Žç™‚çž­èŠè“Œ"], -["d7a1","éŒéŹ§éŸćŁ˜ć©ć±ąæš“æ·šæŒç˜»çŽŻçž·è”žè€žé€é™‹ćŠ‰æ—’æŸłæŠŽæ”æșœç€ç‰ç‘ ç•™ç˜€çĄ«èŹŹéĄžć…­æˆźé™žäŸ–ć€«ćŽ™æ·Șç¶žèŒȘćŸ‹æ…„æ —ï„Ąéš†ć‹’è‚‹ć‡œć‡Œæ„žçšœç¶Ÿè±é™”äżšćˆ©ćŽ˜ćć”Žć±„æ‚§æŽæąšæ”ŹçŠç‹žç†ç’ƒï„ąç—ąç±ŹçœčçŸžèŽ‰èŁèŁĄé‡Œé‡é›ąéŻ‰ćæœŸç‡ç’˜è—șèșȘ隣鱗éșŸæž—æ·‹çłè‡šéœ–ç Ź"], -["d8a1","立珠çČ’æ‘©ç‘Șç—ČçąŒçŁšéŠŹé­”éș»ćŻžć蕿Œ è†œèŽ«é‚ˆäž‡ććš©ć·’ćœŽæ…ąæŒœæ™©æ›Œæ»żæŒ«çŁçžžèŹè”“è »èŒ“é„…é°»ć”œæŠč末æČ«èŒ‰è„ȘéșäșĄćŠ„ćż˜ćż™æœ›ç¶Čçœ”èŠ’èŒ«èŽœèŒžé‚™ćŸ‹ćŠčćȘ’ćŻæ˜§æžšæą…æŻç…€çœ”èČ·èłŁé‚é­…è„ˆèČŠé™Œé©€éș„ć­Ÿæ°“çŒ›ç›Č盟萌ć†ȘèŠ“ć…ć†•ć‹‰æŁ‰æČ”çœ„çœ ç¶żç·Źéąéș”滅"], -["d9a1","è”‘ć†„ćć‘œæ˜Žæšæ€§æșŸçšżçž‘èŒ—è“‚èžŸé…©éŠ˜éłŽèą‚äŸźć†’ć‹Ÿć§†ćžœæ…•æ‘žæ‘čæšźæŸæšĄæŻæŻ›ç‰Ÿç‰Ąç‘çœžçŸ›è€—èŠŒèŒ…èŹ€èŹšèČŒæœšæČç‰§ç›źçŠç©†é¶©æ­żæČ’ć€ąæœŠè’™ćŻćą“ćŠ™ć»Ÿææ˜ŽæłæžșçŒ«ç«—è‹—éŒšć‹™ć·«æ†źæ‡‹æˆŠæ‹‡æ’«æ— æ„™æ­ŠæŻ‹ç„Ąç·ç•çč†èˆžèŒ‚è•ȘèȘŁèČżéœ§é”Ąćąšé»˜ć€‘ćˆŽć»ć•æ–‡"], -["daa1","æ±¶çŽŠçŽ‹èžèšŠé–€é›Żć‹żæČ•物摳ćȘšć°Ÿć”‹ćœŒćŸźæœȘæą¶æ„ŁæžŒæč„çœ‰ç±łçŸŽè–‡èŹŽèż·éĄé»ŽćČ·æ‚¶æ„æ†«æ•æ—»æ—Œæ°‘æłŻçŽŸç‰ç·Ąé–”ćŻ†èœœèŹć‰ćšæ‹ææ’ČæœŽæšžæłŠç€ç’žçź”çČ•çž›è†Šèˆ¶è–„èż«é›čé§äŒŽćŠćć›æ‹ŒæŹæ”€æ–‘æ§ƒæłźæœ˜ç­ç•”ç˜ąç›€ç›ŒçŁçŁ»ç€Źç”†èˆŹèŸ èż”é ’éŁŻć‹ƒæ‹”æ’„æž€æœ‘"], -["dba1","ç™Œè·‹é†±é‰ąé«źé­ƒć€Łć‚ćŠćŠšć°šćč‡ćœ·æˆżæ”Ÿæ–čæ—æ˜‰æž‹æŠœæ»‚磅玥è‚Șè†€èˆ«èŠłè’ĄèšŒèšȘèŹ—é‚Šé˜ČéŸć€äżłï„ŁćŸčćŸ˜æ‹œæŽ’æŻæčƒç„™ç›ƒèƒŒèƒšèŁŽèŁ”è€™èł èŒ©é…é™ȘäŒŻäœ°ćž›æŸæ ąç™œç™Ÿé­„ćčĄæšŠç…©ç‡”ç•Șï„€çčè•ƒè—©éŁœäŒç­çœ°é–„ć‡Ąćž†æą”æ°Ÿæ±Žæł›çŠŻçŻ„èŒƒæł•çșćƒ»ćŠˆćŁæ“˜æȘ—ç’§ç™–"], -["dca1","çą§è˜—é—ąéœčï„„ćžćŒèźŠèŸšèŸŻé‚Šćˆ„çž„é±‰éŒˆäž™ć€‚ć…”ć±›ćč·æ˜žæ˜șæŸ„æŁ…ç‚łç”ç—…ç§‰ç«èŒ§é€ éšˆäżć Ąć ±ćŻ¶æ™źæ­„æŽ‘æčșæœœç€ç”«è©èŁœè€“è­œèŒ”äŒćƒ•ćŒćœćź“ćŸ©æœçŠè…čèŒŻè””è€‡èŠ†èŒčèŒ»éŠ„é°’æœŹäč¶äżžć„‰ć°ćłŻćł°æ§æŁ’çƒœç†ąç«çž«è“Źèœ‚é€ąé‹’éłłäžä»˜äżŻć‚…ć‰–ć‰ŻćŠć’ćŸ ć€«ć©Š"], -["dda1","ć­šć­”ćŻŒćșœï„Šæ‰¶æ•·æ–§æ”źæș„çˆ¶çŹŠç°żçŒ¶è…è…‘è†šè‰€èŠ™èŽ©èšƒèČ èłŠèł»è”Žè¶șéƒšé‡œé˜œé™„é§™éł§ćŒ—ćˆ†ć©ć™Žćąłć„”ć„źćżżæ†€æ‰źæ˜æ±Ÿç„šç›†çČ‰çłžçŽ›èŠŹèłé›°ï„§äœ›ćŒ—ćœżæ‹‚ćŽ©æœ‹æŁšçĄŒçčƒé”Źäž•ć‚™ćŒ•ćŒȘć‘ćŠƒć©ąćș‡æ‚Č憊扉æ‰čæ–æž‡æŠ§æŻ”æŻ–æŻ—æŻ˜æČžï„šç”ç—ș砒籑秕秘çČƒç·‹çżĄè‚„"], -["dea1","脟臂èČèœšèŁšèȘčè­ŹèČ»é„™éžéŁ›éŒ»ćšŹćŹȘćœŹæ–ŒæȘłæźŻæ”œæż±ç€•牝玭èČ§èł“é »æ†‘æ°·è˜éšäčäș‹äș›ä»•äŒșäŒŒäœżäżŸćƒżćČćžć”†ć—Łć››ćŁ«ć„ąćš‘ćŻ«ćŻșć°„ć·łćž«ćŸ™æ€æšæ–œæ–ŻæŸ¶æŸ»æą­æ­»æČ™æł—æžŁç€‰ç…ç ‚ç€Ÿç„€ç„ ç§çŻ©çŽ—ç”Čè‚†èˆèŽŽè“‘è›‡èŁŸè©è©žèŹèłœè”ŠèŸ­é‚ȘéŁŒé§Ÿéșć‰Šï„©æœ”ï„Ș"], -["dfa1","悘ćˆȘć±±æ•Łæ±•çŠç”Łç–çź—è’œé…žéœ°äč·æ’’æźșç…žè–©äž‰ï„«æ‰æŁźæž—èŠŸè”˜èĄ«æ·æŸéˆ’éąŻäžŠć‚·ćƒć„Ÿć•†ć–Ș昗歀氙泠澾ćșŠćș ć»‚æƒłæĄ‘æ©Ąæč˜çˆœç‰€ç‹€ç›žç„„çź±çż”èŁłè§Žè©łè±ĄèłžéœœćĄžç’œèłœć—‡ï„Źç©ĄçŽąè‰Čç‰Čç”Ÿç”„ï„­çŹ™ćą…ćŁ»ć¶Œćșćș¶ćŸæ•æŠ’æżæ•æš‘æ›™æ›žæ –æŁČ犀瑞筟生緖çœČ"], -["e0a1","èƒ„èˆ’è–Żè„żèȘ“é€é‹€é»éŒ ć€•ć„­ćž­æƒœæ˜”æ™łæžæ±æ·…æœŸçŸłçą©è“†é‡‹éŒ«ä»™ćƒŠć…ˆć–„ćŹ‹ćźŁæ‰‡æ•Ÿæ—‹æžČç…œçç‘„ç’‡ç’żç™ŹçŠȘ線çč•矚è…șè†łèˆčè˜šèŸŹè©”è·ŁéžéŠ‘é„é„éźźćšć±‘æ„”æł„æŽ©æž«èˆŒè–›è€»èš­èȘȘé›Șéœ§ć‰ĄæščæźČçș–èŸŸèŽé–ƒé™æ”æ¶‰ç‡źï„źćŸŽć§“ćźŹæ€§æƒș成星晟猩çč盛省筬"], -["e1a1","聖èČè…„èȘ é†’䞖拹æ­Č掗皅çŹčçŽ°ï„ŻèČ°ćŹć˜ŻćĄ‘ćź”ć°ć°‘ć·ąæ‰€æŽƒæ”æ˜­æąłæČŒæ¶ˆæșŻç€Ÿç‚€ç‡’ç”Šç–ç–Žç˜™çŹ‘çŻ ç°«çŽ çŽčè”Źè•­è˜‡èšŽé€éĄé‚”éŠ·éŸ¶éš·äż—ć±ŹæŸæ¶‘çȟçșŒèŹ–èŽ–é€Ÿć­«ć·œæè“€éœéŁĄçŽ‡ćź‹æ‚šæŸæ·žèšŸèȘŠé€é Œćˆ·ï„°ç‘çąŽéŽ–èĄ°é‡—äżźć—ć—œć›šćž‚ćŁœć«‚ćźˆćČ«ćł€ćž„æ„"], -["e2a1","戍手授搜收敞æščæźŠæ°ŽæŽ™æŒ±ç‡§ç‹©çžç‡ç’Čç˜ŠçĄç§€ç©—ç«ȘçČčç¶ç¶ŹçčĄçŸžè„©èŒ±è’è“šè—Șèą–èȘ°èźèŒžé‚é‚ƒé…ŹéŠ–éŠčéš‹éš§éššé›–éœ€é ˆéŠ–é«“éŹšć”ćĄŸć€™ć­°ćźżæ·‘æœšç†ŸçĄç’čè‚…èœć·ĄćŸ‡ćŸȘæ‚æ—Źæ ’æ„Żæ©“æź‰æŽ”æ·łçŁç›ŸçžŹç­çŽ”è„Łèˆœè€è“Žè•Łè©ąè«„é†‡éŒžé †éŠŽæˆŒèĄ“èż°é‰„ćŽ‡ćŽ§"], -["e3a1","ć”©ç‘Ÿè†èšæż•æ‹Ÿçż’è€¶è„Č侞äč˜ćƒ§ć‹ć‡æ‰żæ˜‡çč©è …é™žäŸćŒ™ć˜¶ć§‹ćȘ€ć°žć±Žć±ćž‚ćŒ‘æƒæ–œæ˜Żæ™‚æžŸæŸŽçŒœçŸąç€șçż…è’”è“èŠ–è©Šè©©è«Ąè±•è±șćŸŽćŻ”ćŒæŻæ‹­æ€æź–æčœç†„çŻ’è•è­˜è»ŸéŁŸéŁŸäŒžäŸäżĄć‘»ćš ćźžæ„Œæ–°æ™šç‡Œç”łç„žçŽłè…Žè‡ŁèŽ˜è–Ș藎蜃蚊èș«èŸ›ï„±èż…ć€±ćź€ćŻŠæ‚‰ćŻ©ć°‹ćżƒæČ"], -["e4a1","ï„Čæ·±ç€‹ç”šèŠŻè«¶ä»€ćï„łé›™æ°äșžäż„ć…’ć•žćš„ćłšæˆ‘ç‰™èŠœèŽȘè›ŸèĄ™èšé˜żé›…é€“éŽ‰é”ć ŠćČłć¶œć脿ƒĄæ„•æĄæš‚æž„é„‚é”éĄŽé°éœ·ćź‰ćČžæŒ‰æ™æĄˆçœŒé›éžéĄ”éźŸæ–ĄèŹè»‹é–Œć””ćȩ淖ćș”æš—ç™ŒèŽé—‡ćŁ“æŠŒç‹ŽéŽšä»°ć€źæ€æ˜»æźƒç§§éŽŠćŽ“ć“€ćŸƒćŽ–æ„›æ›–æ¶Żçąè‰Ÿéš˜é„ćŽ„æ‰ŒæŽ–æ¶ČçžŠè…‹éĄ"], -["e5a1","æ«»çœŒé¶ŻéžšäčŸć€»ć†¶ć€œæƒč揶怰çˆșè€¶ï„Žé‡ŽćŒ±ï„”ï„¶çŽ„è‹„è‘Żè’»è—„èșï„·äœŻï„žï„čćŁ€ć­ƒæ™æšæ”˜æ•­æš˜ï„șæ„ŠæšŁæŽ‹ç€ç…Źç—’ç˜çŠłç©°ï„»çŸŠï„Œè„„ï„œèź“é‡€é™œï„Ÿé€Šćœ„ćŸĄæ–ŒæŒç˜€çŠŠèȘžéŠ­é­šéœŹć„„æ†¶æŠ‘æȘè‡†ćƒć °ćœŠç„‰èš€è«șć­Œè˜–äżșć„ŒćšŽć„„æŽ©æ·čć¶Șæ„­ć††äșˆäœ™ï„żïŠ€ïŠćŠ‚ïŠ‚"], -["e6a1","歟汝璔瀖與艅èŒčèŒżèœïŠ†é€˜ïŠ‡ïŠˆïŠ‰äșŠïЊ㟟ćœč易疫çččè­ŻïŠé€†é©›ćš„ć §ć§žćšŸćźŽïŠŽć»¶ïŠïŠææŒ»ïŠ‘æ€œæČ‡æČżæ¶Žæ¶“æ·”æŒ”ïŠ’çƒŸç„¶ç…™ïŠ“ç‡ƒç‡•ïŠ”çĄçĄŻïŠ•ç­”ç·ŁïŠ–çžŻïŠ—èĄè»ŸïŠ˜ïŠ™ïŠšé‰›ïŠ›éł¶ïŠœïŠïŠžæ‚…æ¶…ïŠŸç†±ïŠ ïŠĄé–±ćŽ­ïŠąïŠŁïŠ€æŸ“ïŠ„ç‚Žç„°ç°è‰¶è‹’"], -["e7a1","閻髄éčœæ›„ïŠ§ç‡è‘‰ïŠšïŠ©ćĄ‹ïŠȘïŠ«ć¶žćœ±ïŠŹæ˜ æšŽæ„čæŠźæ°žæłłæž¶æœæżšç€›ç€Żç…ç‡Ÿç°ïŠ­ç‘›ïŠźç“”ç›ˆç©Žçș“ïŠŻïŠ°è‹±è© èżŽïŠ±éˆïŠČéœ™ïŠłïŠŽäč‚ć€ȘïŠ”ćˆˆćĄæ›łæ±­æżŠçŒŠçżç©ąèŠźè—è˜‚ïŠ¶èŁ”è©Łè­œè±«ïŠ·éŠłïŠžéœ“é äș”äŒäż‰ć‚ČćˆćŸćłć—šćĄąćąșć„§ćš›ćŻ€æ‚ŸïŠčæ‡Šæ•–æ—żæ™€æą§æ±šæŸł"], -["e8a1","çƒç†Źç’ç­œèœˆèȘ€é°ČéŒ‡ć±‹æČƒç„玉éˆșæș«ç‘„ç˜Ÿç©©çž•è˜Šć…€ćŁ…æ“ç“źç”•ç™°çżé‚•é›é„”æžŠç“ŠçȘ©çȘȘè‡„è›™èžèš›ć©‰ćźŒćź›æąĄæ€€æ”ŁçŽ©ç“çŹçą—ç·©çż«è„˜è…•èŽžè±Œé˜źé ‘æ›°ćŸ€æ—ș枉æ±Ș王怭湃æ­ȘçŸźć€–ć”Źć·çŒ„ç•ïŠșïŠ»ćƒ„ć‡čć Żć€­ćŠ–ć§šćŻ„ïŠŒïŠœć¶ąæ‹—æ–æ’“æ“ŸïŠŸæ›œïŠżæ©ˆï§€ç‡żç‘€ï§"], -["e9a1","çȘˆçȘŻçč‡çčžè€€è…°ï§‚èŸŻèŠèŹ é™ï§ƒé‚€é„’æ…ŸæŹČæ”ŽçžŸè€„èŸ±äż‘ć‚­ć†—ć‹‡ćŸ‡ćą‰ćźčćșžæ…‚投涌æč§æș¶ç†”ç‘ąç”šç”ŹèłèŒžè“‰èžŠéŽ”éžï§„äșŽäœ‘恶ć„Șćˆć‹ćłćź‡ćŻ“ć°€æ„šæ†‚æ—Žç‰›çŽ—ç‘€ç›‚ç„çŠ‘çŠčçŽ†çŸœèŠ‹è—•è™žèż‚é‡éƒ”é‡Șéš…é›šé›©ć‹–ćœ§æ—­æ˜±æ Żç…œçš¶éƒé Šäș‘ï§…æ©’æźžæŸç†‰è€˜èŠžè•“"], -["eaa1","運隕é›ČéŸ»è”šéŹ±äșç†Šé›„ć…ƒćŽŸć“Ąćœ“ćœ’ćžŁćȘ›ć«„ćŻƒæ€šæ„żæŽæČ…æŽčæčČæșçˆ°çŒżç‘—è‹‘èąèœ…é ï§†é™ąéĄ˜éŽ›æœˆè¶Šé‰žäœć‰ćƒžć±ćœć§”ćšć°‰æ…°æšæž­çˆČç‘‹ç·ŻèƒƒèŽè‘Šè”żèŸèĄ›è€˜èŹ‚é•éŸ‹é­äčłäŸ‘ć„’ć…Șï§‡ć”Żć–©ć­șćź„ćčŒćčœćșŸæ‚ æƒŸæ„ˆæ„‰æ„æ”žæœ‰ï§ˆæŸ”æŸšï§‰æ„Ąæ„ąæČčæŽ§ï§Šæžžï§‹"], -["eba1","æżĄçŒ¶çŒ·ï§Œç‘œç”±ï§ç™’ï§Žï§ç¶­è‡ŸèžèŁ•èȘ˜è«›è«­èž°èč‚遊速éșé…‰é‡‰éźï§ï§‘ć ‰ï§’æŻ“è‚‰è‚Čï§“ï§”ć…ć„«ć°čï§•ï§–æœ€çŽ§èƒ€èŽ‡ï§—éˆ—é–ï§˜ï§™ï§šï§›èżæˆŽç€œç”šèžï§œćž æ©æ…‡æź·èȘŸéŠ€éš±äč™ćŸæ·«è”­é™°éŸłéŁźæ–æłŁé‚‘ć‡æ‡‰è†șé·čäŸć€šć„€ćźœæ„æ‡żæ“Źæ€…æŻ…ç–‘çŸŁçŸ©è‰€è–èŸ»èĄŁèȘŒ"], -["eca1","議醫äșŒä»„äŒŠï§ï§žć€·ć§šï§Ÿć·ČćŒ›ćœ›æ€Ąï§ ï§Ąï§ąï§ŁçˆŸç„ï§€ç•°ç—ï§„ç§»ï§Šè€Œè€łè‚„è‹Ąè‘ï§§ï§šèČœèČłé‚‡ï§©ï§ȘéŁŽé€Œï§«ï§Źç€·ç›ŠçżŠçżŒçżŒèŹšäșșä»ćˆƒć°ï§­ć’œć› ć§»ćŻ…ćŒ•ćżæčźï§źï§Żç”Ș茔藺蚓èȘï§±é­é·ï§Čï§łäž€äœšäœŸćŁčæ—„æșąé€žéްéŠčä»»ćŁŹćŠŠć§™æï§Žï§”çš”ï§¶èèłƒć…„ć„"], -["eda1","ï§·ï§žï§čä»ć‰©ć­•èŠżä»”ćˆșć’šć§‰ć§żć­ć­—ć­œæŁæ…ˆæ»‹ç‚™ç…źçŽ†ç“·ç–”çŁçŽ«è€…è‡ȘèŒšè”—è—‰è«źèł‡é›Œäœœć‹șćšŒæ–«æ˜šçŒç‚žçˆ”ç¶œèŠé…Œé›€é”Čć­±æŁ§æź˜æœș盞ćČ‘æš«æœ›çźŽç°Șè ¶é›œäžˆä»—ćŒ ć Žćą»ćŁŻć„Źć°‡ćžłćș„ćŒ”掌æšČ杖暟æȘŁæŹŒæŒżç‰†ï§ș獐璋章çČ§è…žè‡Ÿè‡§èŽŠè‘Źè”Łè–”è—èŁèŽ“é†Źé•·"], -["eea1","éšœć†ć“‰ćœšćź°æ‰ææ œæą“æžœæ»“çœçžĄèŁèČĄèŒ‰éœ‹éœŽçˆ­çźè«éŒšäœ‡äœŽć„Č撀槐ćș•æŠ”æ”æ„źæš—æČźæžšç‹™çŒȘç–œçźžçŽ”è‹§èč著藷詛èČŻèș‡é€™é‚žé›ŽéœŸć‹ŁćŠć«ĄćŻ‚æ‘˜æ•”æ»Žç‹„ï§»çš„ç©çŹ›ç±çžŸçżŸè»èŹ«èłŠè”€è·ĄèčŸèżȘèżč適鏑䜃äœș悳慹慾才ć‰ȘćĄĄćĄŒć„ ć°ˆć±•ć»›æ‚›æˆ°æ “æźżæ°ˆæŸ±"], -["efa1","煎琠田甾畑ç™Č筌缋缭篆çșè©źèŒŸèœ‰éˆżéŠ“éŒąé«é›»éĄšéĄ«é€žćˆ‡æˆȘæŠ˜æ”™ç™€ç«ŠçŻ€ç”¶ć ćČŸćș—挞ç‚čçČ˜éœ‘éźŽé»žæŽ„æ‘ș蝶䞁äș•äș­ćœć”摈槃漚ćč€ćș­ć»·ćŸæƒ…æŒșæ”żæ•Žæ—Œæ™¶æ™žæŸŸæ„šæȘ‰æ­Łæ±€æ·€æ·šæžŸæčžç€žç‚ĄçŽŽçœç”șç›çą‡çŠŽçš‹ç©œçČŸç¶Žè‰‡èš‚è«ȘèȞ鄭酊釘鉩鋌錠霆靖"], -["f0a1","éœé ‚éŒŽćˆ¶ćŠ‘ć•Œć €ćžćŒŸæ‚ŒææąŻæżŸç„­çŹŹè‡è–șèŁœè«žèč„é†é™€éš›éœœéĄŒéœŠäżŽć…†ć‡‹ćŠ©ć˜ČćŒ”ćœ«æŽȘ操早晁æ›șæ›čæœæąæŁ—æ§œæŒ•æœźç…§ç‡„çˆȘç’Șçœș焖焚租皠çȘ•çČ—çłŸç”„çč°è‚‡è—»èš€è©”èȘżè¶™èșé€ é­é‡Łé˜»é›•éł„æ—ç°‡è¶łéƒć­˜ć°Šć’æ‹™çŒć€§ćź—ćŸžæ‚°æ…«æŁ•æ·™çźçšźç”‚ç¶œçž±è…«"], -["f1a1","èžȘèž”éŸé˜äœćć·Šćș§æŒ«çœȘäž»äœäŸćšć§èƒ„ć‘Șć‘šć—Ÿć„ćź™ć·žć»šæ™æœ±æŸ±æ ȘæłšæŽČæčŠæŸç‚·ç ç–‡ç±ŒçŽ‚çŽŹç¶ąèˆŸè››èš»èȘ…è”°èșŠèŒłé€±é…Žé…’鑄駐ç«čçČ„äżŠć„ć‡†ćŸˆćŻŻćł»æ™™æšœæ”šæș–æżŹç„Œç•Żç«Łè ąé€Ąé”é›‹é§żèŒäž­ä»ČèĄ†é‡ćœæ«›æ„«æ±è‘șćąžæ†Žæ›Ÿæ‹Żçƒç”‘ç—‡çč’è’žè­‰èވäč‹ćȘ"], -["f2a1","ć’«ćœ°ć€ćż—æŒæŒ‡æ‘Żæ”Żæ—šæ™șæžæžłæ­ąæ± æČšæŒŹçŸ„ç „ç„‰ç„—çŽ™è‚ąè„‚è‡łèŠèŠ·èœ˜èȘŒï§ŒèŽ„è¶ŸéČ盎皙皷çč”è·ć”‡ć—”ćĄ”æŒŻæąæ™‰æ™‹æĄ­æŠ›æź„æŽ„æș±çç‘šç’Ąç•›ç–čç›Ąçœžçž‹ç§Šçž‰çžè‡»è”Żèą—èšșèł‘è»«èŸ°é€ČéŽ­é™Łé™łéœ‡äŸ„ć±ć§Șć«‰ćž™æĄŽç“†ç–Ÿç§©çȘ’è†Łè›­èłȘè·Œèż­æ–Ÿæœ•ï§œćŸ·æœ—ç·èŒŻ"], -["f3a1","é¶é›†ćŸ”æ‡ČæŸ„äž”äŸ˜ć€Ÿć‰ć—Ÿć”Żć·źæŹĄæ­€çŁ‹çźšï§Ÿèč‰è»Šéźæ‰æŸç€çȘ„éŒŻé‘żéœȘæ’°æŸŻç‡Šç’šç“šç«„ç°’çș‚çČČçș˜èźšèŽŠé‘œé€é„ŒćˆčćŻŸæ“Šæœ­çŽźćƒ­ćƒćĄč慘慙æ‡șæ–Źç«™èź’èź–ć€‰ć€Ąć‰”ć”±ćšŒć» ćœ°æ„Žæ•žæ˜Œæ˜¶æšąæ§æ»„æŒČ猖瘡çȘ“è„čè‰™è–è’Œć‚”ćŸ°ćŻ€ćŻšćœ©æŽĄç Šç¶”èœè”Ąé‡‡é‡”ć†ŠæŸ”ç­–"], -["f4a1","èČŹć‡„ćŠ»æ‚œè™•ć€œï§żć‰”ć°ș慜戚拓æ“Č斄滌瘠脊èč é™Ÿéš»ä»Ÿćƒć–˜ć€©ć·æ“…æł‰æ·șçŽ”ç©żèˆ›è–Šèł€èžé·é‡§é—Ąé˜ĄéŸ†ć‡žć“Č斆ćŸčæ’€æŸˆç¶ŽèŒŸèœé”ćƒ‰ć°–æČŸæ·»ç”›çž»ç°œç±€è©čè«‚ć žćŠŸćž–æ·ç‰’ç–Šç«è«œèČŒèŒ’ć»łæ™Žæ·žèœèè«‹é‘éŻ–ïš€ć‰ƒæ›żæ¶•æ»Żç· è«Šé€źéžé«”ćˆć‰żć“šæ†”æŠ„æ‹›æąą"], -["f5a1","æ€’æ„šæš”ç‚’ç„ŠçĄç€ç€Žç§’çšè‚–è‰žè‹•è‰è•‰èČ‚è¶…é…ąé†‹é†źäżƒć›‘ç‡­çŸ—èœ€è§žćŻžćż–æ‘é‚šćąćĄšćŻ”æ‚€æ†æ‘ çžœè°è”„éŠƒæ’źć‚ŹćŽ”æœ€ćąœæŠœæŽšæ€Žæ„žæšžæč«çšșç§‹èŠ»è©è«è¶šèżœé„’é…‹é†œéŒéŒ˜éŽšé››éš¶é°äž‘ç•œç„ç«șç­‘çŻ‰çžźè“„èč™èčŽè»žé€æ˜„æ€żç‘ƒć‡șæœźé»œć……ćż æČ–èŸČèĄèĄ·æ‚Žè†”èƒ"], -["f6a1","èŽ…ć–ćčć˜Žćš¶ć°±ç‚Šçż èšè„†è‡­è¶Łé†‰é©Ÿé·ČćŽä»„ćŽ æƒ»æžŹć±€äŸˆć€€ć—€ćł™ć蟿„æą”æČ»æ·„ç†Ÿç—”ç—Žç™Ąçššç©‰ç·‡ç·»çœźè‡Žèš©èŒœé›‰éŠłéœ’ć‰‡ć‹…éŁ­èŠȘäžƒæŸ’æŒ†äŸ”ćŻąæž•æČˆæ”žç›ç §é‡éŒèŸ„ç§€çš±ćż«ä»–ć’€ć”ŸćąźćŠ„æƒ°æ‰“æ‹–æœ¶æ„•èˆ”é™€éŠ±é§ć€Źć“ć•„ćŒïšæ‰˜ïš‚æ“ąæ™«æŸæżæżŻçąçžèš—"], -["f7a1","éžć‘‘ć˜†ćŠćœˆæ†šæ­Žç˜ç‚­ç¶»èȘ•ć„Șè„«æŽąçœˆè€œèČȘćĄ”æ­æŠ»ćź•ćž‘æčŻïšƒè•©ć…Œć°ć€Șæ€ æ…‹æź†æ±°æł°çŹžèƒŽè‹”è·†é‚°éą±ïš„æ“‡æŸ€æ’‘æ”„ć…ŽććœŸèšŽæ…ŸæĄ¶ïš…ç—›ç­’ç”±é€šć †æ§Œè…żè€Ș退é čćžć„—ćŠŹæŠ•é€éŹȘ慝ç‰čé—–ćĄć©†ć·ŽæŠŠæ’­æ“șæ·æłąæŽŸçˆŹç¶ç Žçœ·èŠ­è·›é —ćˆ€ć‚æżç‰ˆç“ŁèČ©èŸŠéˆ‘"], -["f8a1","é˜Șć…«ć­æŒäœ©ć”„æ‚–æ•—æČ›æ”żç‰Œç‹œçš—èЇèČćœ­æŸŽçƒčè†šæ„ŽäŸżćæ‰ç‰‡çŻ‡ç·šçż©ééž­éš™èȶćȘćčłæž°èè©•搠揖ćčŁć»ąćŒŠæ–ƒè‚șè”œé–‰é™›äœˆćŒ…ćŒćŒć’†ć“șćœƒćžƒæ€–æŠ›æŠ±æ•ïš†æłĄæ”Šç–±ç Čèƒžè„Żè‹žè‘Ąè’Čèąè€’é€‹é‹ȘéŁœéź‘ćč…æšŽæ›ç€‘çˆ†ïš‡äż”ć‰œćœȘæ…“æ“æš™æŒ‚ç“ąç„šèĄšè±čéŁ‡éŁ„é©ƒ"], -["f9a1","ć“çšŸæ„“è«·è±ŠéąšéŠźćœŒæŠ«ç–Čçšźèą«éżé™‚ćŒčćŒŒćż…æłŒçŒç•ąç–‹ç­†è‹ŸéŠäčé€Œäž‹äœ•ćŽŠć€ć»ˆæ˜°æČłç‘•è·èŠèł€ééœžé°•ćŁ‘ć­žè™èŹ”é¶ŽćŻ’æšæ‚æ—±æ±—æŒąæŸŁç€šçœ•çż°é–‘é–’é™éŸ“ć‰Čèœ„ć‡œć«ć’žć•Łć–ŠæȘ»æ¶”緘艊銜陷éččćˆć“ˆç›’è›€é–€é—”é™œäșąäŒ‰ć§źć«Šć··æ’æŠ—æ­æĄæČ†æžŻçŒžè‚›èˆȘ"], -["faa1","項äș„ć•ć’łćž“ć„šć­©ćźłæ‡ˆæ„·æ”·ç€ŁèŸčè§Łè©Č諧邂駭éȘžćŠŸæ žć€–ćčžæè‡èĄŒäș«ć‘ćšźçŠé„•éŸżé€‰é„—éŠ™ć™“ćąŸè™›èš±æ†Č櫶獻軒歇éšȘé©—ć„•çˆ€è”«é©äż”ćłŽćŒŠæ‡žæ™›æł«ç‚«çŽ„çŽčçŸçœ©çç”ƒç”ąçžŁèˆ·èĄ’ïšŠèłąé‰‰éĄŻć­‘ç©ŽèĄ€é ć«Œäż ć”ć€ŸćłœæŒŸæ”čç‹čè„…è„‡èŽąé‹é °äșšć…„ćˆ‘ćž‹"], -["fba1","ćœąæł‚æ»Žç€…çç‚Żç†’ç©ç‘©èŠèžąèĄĄé€ˆé‚ąéŽŁéŠšć…źćœ—æƒ æ…§æšłè•™èčŠé†Żéž‹äčŽäș’ć‘ŒćŁ•ćŁșć„œćČ”ćŒ§æˆ¶æ‰ˆæ˜Šæ™§æŻ«æ”©æ·æč–æ»žæŸ”æż æż©çç‹ç„ç‘šç“ çš“ç„œçłŠçžžèƒĄèŠŠè‘«è’żè™Žè™ŸèŽè­·è±ȘéŽŹé €éĄ„æƒ‘æˆ–é…·ć©šæ˜æ··æžŸçżé­‚ćżœæƒšçŹć“„ćŒ˜æ±žæł“æŽȘ烘箅è™čèšŒéŽ»ćŒ–ć’ŒćŹ…æšș火畔"], -["fca1","çŠçŠŸèŠ±èŻè©±è­èČšéŽïš‹æ“Žæ”«çąș繻穫䞞斚愐柊ć軿‚Łæ›æ­Ąæ™„æĄ“æž™ç…„ç’°çŽˆé‚„é©©é°„æŽ»æ»‘çŒŸè±é—Šć‡°ćčŒćŸšææƒ¶æ„°æ…Œæ™ƒæ™„æŠ„æłæčŸæ»‰æœąç…Œç’œçš‡çŻç°§è’è—é‘éšé»ƒćŒŻć›žć»»ćŸŠæąæ‚”æ‡·æ™ŠæœƒæȘœæ·źæŸźç°çȘçčȘ膟茎蛔èȘšèł„ćŠƒçČćź–æ©«é„ć“źćš†ć­æ•ˆæ–…æ›‰æąŸæ¶æ·†"], -["fda1","çˆ»è‚Žé…”é©äŸŻć€™ćŽšćŽćŒć–‰ć—…ćžżćŸŒæœœç…Šçé€…ć‹›ć‹łćĄ€ćŁŽç„„ç†ç‡»è–°èš“æšˆè–šć–§æš„ç…Šè±ć‰ć–™æŻćœ™ćŸœæźæš‰ç…‡è«±èŒéșŸäŒ‘æșçƒ‹ç•Šè™§æ€è­Žé·žć…‡ć‡¶ćŒˆæŽ¶èƒžé»‘æ˜•æŹŁç‚˜ç—•ćƒć±čçŽ‡èš–æŹ æŹœæ­†ćžæ°æŽœçż•èˆˆćƒ–ć‡žć–œć™«ć›ć§ŹćŹ‰ćžŒæ†™æ†˜æˆ±æ™žæ›Šç†™ç†čç†ș犧穧繀çŸČè©°"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp950.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp950.json deleted file mode 100644 index d8bc871..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/cp950.json +++ /dev/null @@ -1,177 +0,0 @@ -[ -["0","\u0000",127], -["a140","ă€€ïŒŒă€ă€‚ïŒŽâ€§ïŒ›ïŒšïŒŸïŒïž°â€Šâ€„ïčïč‘ïč’·ïč”ïč•ïč–ïč—ïœœâ€“ïž±â€”ïžłâ•ŽïžŽïčïŒˆïŒ‰ïž”ïž¶ïœ›ïœïž·ïžžă€”ă€•ïžčïžșă€ă€‘ïž»ïžŒă€Šă€‹ïžœïžŸă€ˆă€‰ïžżïč€ă€Œă€ïčïč‚ă€Žă€ïčƒïč„ïč™ïčš"], -["a1a1","ïč›ïčœïčïčžâ€˜â€™â€œâ€ă€ă€žâ€”â€ČïŒƒïŒ†ïŒŠâ€»Â§ă€ƒâ—‹â—â–łâ–Čâ—Žâ˜†â˜…â—‡â—†â–Ąâ– â–œâ–ŒăŠŁâ„…ÂŻïżŁïŒżËïč‰ïčŠïčïčŽïč‹ïčŒïčŸïč ïčĄïŒ‹ïŒĂ—Ă·Â±âˆšïŒœïŒžïŒâ‰Šâ‰§â‰ âˆžâ‰’â‰Ąïčą",4,"∩âˆȘâŠ„âˆ âˆŸâŠżă’ă‘âˆ«âˆźâˆ”âˆŽâ™€â™‚âŠ•âŠ™â†‘â†“â†â†’â†–â†—â†™â†˜âˆ„âˆŁïŒ"], -["a240","∕ïčšïŒ„ïż„ă€’ïż ïżĄïŒ…ïŒ â„ƒâ„‰ïč©ïčȘïč«ă•ăŽœăŽăŽžăŽăŽĄăŽŽăŽă„Â°ć…™ć…›ć…žć…ć…Ąć…Łć—§ç“©çłŽâ–",7,"â–â–Žâ–â–Œâ–‹â–Šâ–‰â”Œâ”Žâ”Źâ”€â”œâ–”â”€â”‚â–•â”Œâ”â””â”˜â•­"], -["a2a1","╼╰╯═╞â•Ș╥◹◣◄◀╱â•Čâ•łïŒ",9,"Ⅰ",9,"〡",8,"ćć„ć…ïŒĄ",25,"",21], -["a340","Α",16,"ÎŁ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","侀äč™äžäžƒäčƒäčäș†äșŒäșșć„żć…„ć…«ć‡ ćˆ€ćˆćŠ›ćŒ•ććœćˆäž‰äž‹äžˆäžŠäž«äžžć‡Ąäč…äčˆäčŸäčžäșŽäșĄć…€ćˆƒć‹șćƒć‰ćŁćœŸćŁ«ć€•ć€§ć„łć­ć­‘ć­“ćŻžć°ć°ąć°žć±±ć·ć·„ć·±ć·Čć·łć·ŸćčČć»ŸćŒ‹ćŒ“æ‰"], -["a4a1","侑侐侍侭侰äžčäč‹ć°čäșˆäș‘äș•äș’äș”äșąä»ä»€ä»ƒä»†ä»‡ä»ä»Šä»‹ä»„ć…ƒć…ć…§ć…­ć…źć…Źć†—ć‡¶ćˆ†ćˆ‡ćˆˆć‹»ć‹Ÿć‹żćŒ–ćŒčćˆć‡ć…ćžćŽ„ć‹ćŠććŁŹć€©ć€«ć€Ș怭歔民氀ć°ș汯淎ćč»ć»żćŒ”ćŒ•ćżƒæˆˆæˆ¶æ‰‹æ‰Žæ”Żæ–‡æ–—æ–€æ–čæ—„æ›°æœˆæœšæŹ æ­ąæ­čæŻ‹æŻ”æŻ›æ°æ°Žç«çˆȘçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠŹçŽ‹äž™"], -["a540","䞖䞕䞔䞘䞻äčäčäčŽä»„ä»˜ä»”ä»•ä»–ä»—ä»Łä»€ä»™ä»žć……ć…„ć†‰ć†Šć†Źć‡čć‡șć‡žćˆŠćŠ ćŠŸćŒ…ćŒ†ćŒ—ćŒä»ŸćŠć‰ćĄć ćŻćźćŽ»ćŻć€ćłćŹćźć©ćšćŒćžć”ć«ćŠćȘćČć±ć°ć„ć­ć»ć››ć›šć€–"], -["a5a1","ć€źć€±ć„Žć„¶ć­•ćźƒć°Œć·šć·§ć·Šćž‚ćžƒćčłćčŒćŒćŒ˜ćŒ—ćż…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–„æ—ŠæœźæœŹæœȘæœ«æœ­æ­ŁæŻæ°‘æ°æ°žæ±æ±€æ°ŸçŠŻçŽ„çŽ‰ç“œç“Šç”˜ç”Ÿç”šç”©ç”°ç”±ç”Čç”łç–‹ç™œçšźçšżç›źçŸ›çŸąçŸłç€ș犟穎立䞞䞟äč’äč“äč©äș™äș€äșŠäș„ä»żäŒ‰äŒ™äŒŠäŒ•äŒäŒäŒ‘äŒä»Čä»¶ä»»ä»°ä»łä»œäŒäŒ‹ć…‰ć…‡ć…†ć…ˆć…š"], -["a640","ć…±ć†ć†°ćˆ—ćˆ‘ćˆ’ćˆŽćˆ–ćŠŁćŒˆćŒĄćŒ ć°ć±ć‰ććŒćŠććć‹ć„ć‘ććˆćƒćŽć†ć’ć› ć›žć›ćœłćœ°ćœšćœ­ćœŹćœŻćœ©ć€™ć€šć€·ć€žćŠ„ć„žćŠƒć„œć„č橂橁歗歘漇漈漅漉ćŻș氖ć±č淞枆ćč¶ćčŽ"], -["a6a1","ćŒćŒ›ćż™ćż–æˆŽæˆŒæˆæˆæ‰Łæ‰›æ‰˜æ”¶æ—©æ—šæ—Źæ—­æ›Čæ›łæœ‰æœœæœŽæœ±æœ”æŹĄæ­€æ­»æ°–æ±æ±—æ±™æ±Ÿæ± æ±æ±•æ±Ąæ±›æ±æ±Žç°ç‰Ÿç‰ç™Ÿç«čç±łçłžçŒ¶çŸŠçŸœè€è€ƒè€Œè€’è€łèżè‚‰è‚‹è‚Œè‡Łè‡Șè‡łè‡ŒèˆŒèˆ›èˆŸè‰źè‰Čè‰Ÿè™«èĄ€èĄŒèĄŁè„żé˜ĄäžČäșšäœäœäœ‡äœ—䜞䌎䜛䜕䌰䜐䜑䌜äŒșäŒžäœƒäœ”äŒŒäœ†äœŁ"], -["a740","äœœäœ äŒŻäœŽäŒ¶äœ™äœäœˆäœšć…Œć…‹ć…ć…”ć†¶ć†·ćˆ„ćˆ€ćˆ©ćˆȘćˆšćŠ«ćŠ©ćŠȘćŠŹćŒŁćłć”ćć­ćžćŸćŠć‘Žć§ć‘†ć‘ƒćłć‘ˆć‘‚ć›ć©ć‘Šćčć»ćžćźć”ć¶ć ćŒć‘€ć±ć«ćŸćŹć›Șć›°ć›€ć›«ćŠć‘ć€ć"], -["a7a1","ć‡ćŽćœŸćććœ»ćŁŻć€ŸćŠćŠ’ćŠšćŠžćŠŁćŠ™ćŠ–ćŠćŠ€ćŠ“ćŠŠćŠ„ć­ć­œć­šć­›ćźŒćź‹ćźć°Źć±€ć±ć°żć°ŸćȐćȑćȔćČŒć·«ćžŒćșćș‡ćșŠć»·ćŒ„ćŒŸćœ€ćœąćœ·ćœčćż˜ćżŒćż—ćżćż±ćż«ćżžćżȘ戒我抄抗抖技扶抉扭把扌扟æ‰čæ‰łæŠ’æ‰ŻæŠ˜æ‰źæŠ•æŠ“æŠ‘æŠ†æ”č攻攞旱曎束李杏材村杜杖杞杉杆杠"], -["a840","æ“æ—æ­„æŻæ±‚æ±žæČ™æČæČˆæČ‰æČ…æČ›æ±Șæ±șæČæ±°æČŒæ±šæČ–æČ’汜æČƒæ±Č江汎æČ†æ±¶æČæČ”æČ˜æČ‚ç¶çŒçœçžç‰ąç‰Ąç‰ ç‹„ç‹‚çŽ–ç”Źç”«ç”·ç”žçš‚ç›ŻçŸŁç§ç§€çŠżç©¶çł»çœ•è‚–è‚“è‚è‚˜è‚›è‚šè‚Čè‰ŻèŠ’"], -["a8a1","芋芍芋角蚀谷豆豕èČè”€è”°è¶łèș«è»ŠèŸ›èŸ°èż‚èż†èż…èż„ć·Ąé‚‘é‚ąé‚Ș邩那酉釆里é˜Č队阱é˜Ș阏䞊äč–äčłäș‹äș›äșžäș«äșŹäœŻäŸäŸäœłäœżäœŹäŸ›äŸ‹äŸ†äŸƒäœ°äœ”䟈䜩䜻䟖䜟䟏䟑äœșć…”ć…’ć…•ć…©ć…·ć…¶ć…žć†œć‡œćˆ»ćˆžćˆ·ćˆșćˆ°ćˆźćˆ¶ć‰ćŠŸćŠ»ć’ć”ć“ć‘ćŠć·ćžćčć–ć”ć—ć‘łć‘”"], -["a940","ć’–ć‘žć’•ć’€ć‘»ć‘·ć’„ć’’ć’†ć‘Œć’ć‘±ć‘¶ć’Œć’šć‘ąć‘šć’‹ć‘œć’Žć›șćžƒć·ćȘć©ćĄćŠć€ćŒć€œć„‰ć„‡ć„ˆć„„ć„”ćŠŸćŠ»ć§”ćŠčćŠźć§‘ć§†ć§ć§ć§‹ć§“ć§ŠćŠŻćŠłć§’ć§…ć­Ÿć­€ć­Łćź—ćźšćź˜ćźœćź™ćź›ć°šć±ˆć±…"], -["a9a1","汆ćČ·ćČĄćČžćČ©ćČ«ćȱćȳ澘澚澖澕澛澑ćčžćșšćș—ćșœćș•ćș–ć»¶ćŒŠćŒ§ćŒ©ćŸ€ćŸćœżćœŒćżćż ćżœćż”ćżżæ€æ€”æ€Żæ€”æ€–æ€Șæ€•æ€Ąæ€§æ€©æ€«æ€›æˆ–æˆ•æˆżæˆŸæ‰€æ‰żæ‹‰æ‹Œæ‹„æŠżæ‹‚æŠčæ‹’æ‹›æŠ«æ‹“æ‹”æ‹‹æ‹ˆæŠšæŠœæŠŒæ‹æ‹™æ‹‡æ‹æŠ”æ‹šæŠ±æ‹˜æ‹–æ‹—æ‹†æŠŹæ‹Žæ”Ÿæ–§æ–Œæ—ș昔易昌昆昂明昀昏昕昊"], -["aa40","æ˜‡æœæœ‹æ­æž‹æž•æ±æžœæłæ·æž‡æžæž—æŻæ°æżæž‰æŸæžæ”æžšæž“æŒæȘæČæŹŁæ­Šæ­§æ­żæ°“æ°›æłŁæłšæłłæČ±æłŒæł„æČłæČœæČŸæČŒæłąæČ«æł•æł“æČžæł„æČčæłæČźæł—æł…æł±æČżæČ»æłĄæł›æłŠæČŹæłŻæłœæł–æł "], -["aaa1","ç‚•ç‚Žç‚’ç‚Šç‚™çˆŹçˆ­çˆžç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹çŽ©çŽšçŽŸçŽ«çŽ„ç”œç–ç–™ç–šçš„ç›‚ç›Č盎矄矜瀟焀焁秉秈ç©șç©čç«șçłŸçœ”çŸŒçŸ‹è€…è‚șè‚„è‚ąè‚±è‚Ąè‚«è‚©è‚Žè‚Șè‚Żè‡„è‡ŸèˆèŠłèŠèŠ™èŠ­èŠœèŠŸèŠčèŠ±èŠŹèŠ„èŠŻèŠžèŠŁèŠ°èŠŸèŠ·è™Žè™±ćˆèĄšè»‹èżŽèż”èż‘é‚”é‚žé‚±é‚¶é‡‡é‡‘é•·é–€é˜œé™€é˜żé˜»é™„"], -["ab40","陂éšč雹青非äșŸäș­äșźäżĄäŸ”äŸŻäŸżäż äż‘äżäżäżƒäŸ¶äż˜äżŸäżŠäż—äŸźäżäż„äż‚äżšäżŽäżžäŸ·ć…—ć†’ć†‘ć† ć‰Žć‰ƒć‰Šć‰ć‰Œć‰‹ć‰‡ć‹‡ć‹‰ć‹ƒć‹ćŒć—ć»ćŽšć›ć’Źć“€ć’šć“Žć“‰ć’žć’Šć’łć“‡ć“‚ć’œć’Ș擁"], -["aba1","ć“„ć“ˆć’Żć’«ć’±ć’»ć’©ć’§ć’żć›żćž‚ćž‹ćž ćžŁćžąćŸŽćžźćž“ć„•ć„‘ć„ć„Žć„ć§œć§˜ć§żć§Łć§šćšƒć§„ć§Șć§šć§Šćšć§»ć­©ćźŁćźŠćź€ćźąćź„ć°ć±Žć±ć±ć±‹ćł™ćł’ć··ćžćž„ćžŸćčœćș ćșŠć»șćŒˆćŒ­ćœ„ćŸˆćŸ…ćŸŠćŸ‹ćŸ‡ćŸŒćŸ‰æ€’æ€æ€ æ€„æ€Žæ€šææ°æšæąæ†æƒæŹæ«æȘæ€æ‰æ‹œæŒ–æŒ‰æ‹Œæ‹­æŒæ‹źæ‹œæŒ‡æ‹±æ‹·"], -["ac40","æ‹Żæ‹Źæ‹Ÿæ‹ŽæŒ‘æŒ‚æ”żæ•…æ–«æ–œæ—ąæ˜„æ˜­æ˜ æ˜§æ˜Żæ˜Ÿæ˜šæ˜±æ˜€æ›·æŸżæŸ“æŸ±æŸ”æŸæŸŹæž¶æžŻæŸ”æŸ©æŸŻæŸ„æŸ‘æžŽæŸšæŸ„æžžæŸæŸžæŸłæž°æŸ™æŸąæŸæŸ’æ­Șæźƒæź†æź”æŻ’æŻ—æ°Ÿæł‰æŽ‹æŽČæŽȘ攁掄掌掱掞掗"], -["aca1","æŽ»æŽœæŽŸæŽ¶æŽ›æł”æŽčæŽ§æŽžæŽ©æŽźæŽ”æŽŽæŽ«ç‚«ç‚șç‚łç‚Źç‚Żç‚­ç‚žç‚źç‚€çˆ°ç‰Čç‰Żç‰Žç‹©ç‹ ç‹ĄçŽ·çŠçŽ»çŽČçç€çŽłç”šç”­ç•ç•Œç•Žç•‹ç–«ç–€ç–„ç–ąç–Łç™žçš†çš‡çšˆç›ˆç›†ç›ƒç›…çœç›č盞眉看盟盌眇矜砂研砌砍焆焉焈焇çŠčçŠș科秒秋穿çȘç«żç«œç±œçŽ‚çŽ…çŽ€çŽ‰çŽ‡çŽ„çŽ†çŒžçŸŽçŸżè€„"], -["ad40","è€è€è€‘è€¶èƒ–èƒ„èƒšèƒƒèƒ„èƒŒèƒĄèƒ›èƒŽèƒžèƒ€èƒè‡Žèˆąè‹§èŒƒèŒ…è‹Łè‹›è‹ŠèŒ„è‹„èŒ‚èŒ‰è‹’è‹—è‹±èŒè‹œè‹”è‹‘è‹žè‹“è‹Ÿè‹ŻèŒ†è™è™č虻è™șèĄèĄ«èŠè§”èšˆèš‚èšƒèȞèČ è”Žè”łè¶Žè»è»Œèż°èżŠèżąèżȘèż„"], -["ada1","èż­èż«èż€èżšéƒŠéƒŽéƒéƒƒé…‹é…Šé‡é–‚é™é™‹é™Œé™éąé©éŸ‹éŸ­éŸłé éąšéŁ›éŁŸéŠ–éŠ™äč˜äșłć€Œć€ć€ŁäżŻć€Šć€„äżžć€©ć€–ć€†ć€Œć€Ÿć€šć€’ć€‘äżșć€€ć€”ć€šäż±ć€Ąć€‹ć€™ć€˜äżłäżźć€­ć€ȘäżŸć€«ć€‰ć…Œć†€ć†„ć†ąć‡ć‡Œć‡†ć‡‹ć‰–ć‰œć‰”ć‰›ć‰ćŒȘćżćŽŸćŽćŸć“šć”ć”ć”·ć“Œć“„ć“Č攆ć“ș攔擩擭擥攉擟ć“Ș"], -["ae40","ć“Šć”§ć”‡ć“œć”ćœƒćœ„ćŸ‚ćŸ”ćŸ‹ćŸƒć ‰ć€ć„—ć„˜ć„šćš‘ćš˜ćšœćšŸćš›ćš“ć§Źćš ćšŁćš©ćš„ćšŒćš‰ć­«ć±˜ćź°ćźłćź¶ćźŽćźźćź”ćźčćźžć°„ć±‘ć±•ć±ćł­ćłœćł»ćłȘ泚泰泶掁泎淟枭枫ćș«ćș­ćș§ćŒ±ćŸ’ćŸ‘ćŸæ™"], -["aea1","æŁæ„ææ•æ­æ©æŻæ‚„æ‚Ÿæ‚šæ‚æ‚”æ‚Œæ‚…æ‚–æ‰‡æ‹łæŒˆæ‹żæŽæŒŸæŒŻæ•æ‚æ†ææ‰æŒș捐挜æŒȘæŒ«æŒšææŒæ•ˆæ•‰æ–™æ—æ—…æ™‚æ™‰æ™æ™ƒæ™’æ™Œæ™…æ™æ›žæœ”æœ•æœ—æ Ąæ žæĄˆæĄ†æĄ“æ čæĄ‚æĄ”æ ©æąłæ —æĄŒæĄ‘æ œæŸŽæĄæĄ€æ ŒæĄƒæ ȘæĄ…æ “æ ˜æĄæźŠæź‰æź·æ°Łæ°§æ°šæ°Šæ°€æł°æ”Ș涕消涇攊攞攷攙涓"], -["af40","æ”Źæ¶‰æ”źæ”šæ”Žæ”©æ¶Œæ¶Šæ”čæ¶…攄涔烊烘烀烙烈烏çˆčç‰č狌ç‹čç‹œç‹žç‹·çŽ†ç­ç‰çźç çȘ珞畔畝畜畚留疟病症ç–Čç–łç–œç–Œç–č痂疞皋皰益盍盎眩真眠眚矩砰砧砞砝砎砷"], -["afa1","ç „ç ­ç  ç Ÿç Čç„•ç„ç„ ç„Ÿç„–ç„žç„ç„—ç„šç§€ç§Łç§§ç§Ÿç§Šç§©ç§˜çȘ„çȘˆç«™çŹ†çŹ‘çȉ管算箋箊箠箱箔箐箕箚箜箍箙箛çŒșçœŸçŸ”çż…çżè€†è€˜è€•è€™è€—è€œè€żèƒ±è„‚èƒ°è„…èƒ­èƒŽè„†èƒžèƒłè„ˆèƒœè„ŠèƒŒèƒŻè‡­è‡Źèˆ€èˆèˆȘèˆ«èˆšèˆŹèŠ»èŒ«è’è”èŠèŒžèè‰èŒ”èŒŽèèŒČèŒč茶茗荀茱茚荃"], -["b040","虔蚊èšȘèš“èš€èš©èšŒèšŁèšœèĄ°èĄ·èąèą‚èĄœèĄč蚘蚐蚎蚌蚕蚊蚗蚓蚖蚏蚑豈è±șè±čèČĄèČąè”·èșŹè»’è»”è»èŸ±é€é€†èż·é€€èżșèżŽé€ƒèżœé€…èżžé‚•éƒĄéƒéƒąé…’é…é…Œé‡˜é‡é‡—é‡œé‡™é–ƒé™ąé™Łé™Ą"], -["b0a1","é™›é™é™€é™˜é™žéš»éŁąéŠŹéȘšé«˜éŹ„éŹČéŹŒäčŸćșćœćœć‡ćƒćŒćšć‰ć„ć¶ćŽć•ć”ćŽć·ćć€ćŻć­ć…œć†•ć‡°ć‰Șć‰Żć‹’ć‹™ć‹˜ć‹•ćŒćŒćŒ™ćŒżć€ćŒŸćƒæ›Œć•†ć•Șć•Šć•„ć•žć•Ąć•ƒć•Šć”±ć•–ć•ć••ć”Żć•€ć”žć”źć•œć”Źć•Łć”łć•ć•—ćœˆćœ‹ćœ‰ćŸŸć …ć Šć †ćŸ ćŸ€ćŸșć ‚ć ”ćŸ·ćŸč怠愹暶橁橉橊ć©Șć©€"], -["b140","ćšŒć©ąć©šć©†ć©Šć­°ćŻ‡ćŻ…ćŻ„ćŻ‚ćźżćŻ†ć°‰ć°ˆć°‡ć± ć±œć±ćŽ‡ćŽ†ćŽŽćŽ›ćŽ–ćŽąćŽ‘ćŽ©ćŽ”ćŽ™ćŽ€ćŽ§ćŽ—ć·ąćžžćž¶ćžłćž·ćș·ćșžćș¶ćș”ćșŸćŒ”ćŒ·ćœ—ćœŹćœ©ćœ«ćŸ—ćŸ™ćŸžćŸ˜ćŸĄćŸ ćŸœæżæ‚Łæ‚‰æ‚ æ‚šæƒ‹æ‚ŽæƒŠæ‚œ"], -["b1a1","情悻悔惜悌惘惕惆惟悞惚惇戚戛扈掠控æČæŽ–æŽąæŽ„æ·æ§æŽ˜æŽȘæ±æŽ©æŽ‰æŽƒæŽ›æ«æŽšæŽ„æŽˆæŽ™æŽĄæŽŹæŽ’æŽæŽ€æ»æ©æšæșæ•æ•–æ•‘æ•™æ•—ć•Ÿæ•æ•˜æ••æ•”æ–œæ–›æ–Źæ—æ—‹æ—Œæ—Žæ™æ™šæ™€æ™šæ™Šæ™žæ›čć‹—æœ›æąæąŻæąąæą“æą”æĄżæĄ¶æą±æą§æą—æą°æąƒæŁ„æą­æą†æą…æą”æąæąšæąŸæąĄæą‚æŹČæźș"], -["b240","æŻ«æŻŹæ°«æ¶Žæ¶Œæ·łæ·™æ¶Čæ·Ąæ·Œæ·€æ·»æ·șæž…æ·‡æ·‹æ¶Żæ·‘æ¶źæ·žæ·č涞混淔淅淒枚涔淚淫淘æ·Șæ·±æ·źæ·šæ·†æ·„æ¶Șæ·Źæ¶żæ·Šçƒčç„‰ç„ŠçƒœçƒŻçˆœç‰œçŠçŒœçŒ›çŒ–çŒ“çŒ™çŽ‡ç…çŠçƒç†çŸçç“ ç“¶"], -["b2a1","ç“·ç”œç”ąç•„ç•Šç•ąç•°ç–ç—”ç—•ç–”ç—Šç—çšŽç›”ç›’ç››çœ·çœŸçœŒçœ¶çœžçœșçĄ«çĄƒçĄŽç„„ç„šç„­ç§»çȘ’çȘ•珠珚珛珏珊珙珞珟çȒçȗçČ•ç”†ç”ƒç”±çŽźçŽčçŽŒç”€çŽ°çŽłç”„çŽŻç”‚çŽČçŽ±çŒœçŸžçŸšçżŒçżŽçż’è€œèŠè†è„Żè„–è„Łè„«è„©è„°è„€èˆ‚èˆ”èˆ·èˆ¶èˆčèŽŽèŽžèŽ˜èžèŽąèŽ–èŽœèŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è·è»èŒ"], -["b340","莆莧處ćœȘè›‡è›€èš¶è›„èš”è›†è›‹èš±èšŻè›‰èĄ“èąžèąˆèą«èą’èą–èąèą‹èŠ“èŠèšȘèšèšŁèš„èš±èš­èšŸèš›èšąè±‰è±šèČ©èČŹèČ«èČšèČȘèČ§è”§è”Šè¶Ÿè¶șè»›è»Ÿé€™é€é€šé€—é€Łé€Ÿé€é€é€•é€žé€ é€é€ąé€–é€›é€”"], -["b3a1","éƒšéƒ­éƒœé…—é‡Žé‡”é‡Šé‡Łé‡§é‡­é‡©é–‰é™Ș陔陳陞陰陎陶陷陏雀é›Șé›©ç« ç«Ÿé ‚é ƒé­šéł„éč”éčżéș„éș»ć‚ąć‚ć‚…ć‚™ć‚‘ć‚€ć‚–ć‚˜ć‚šæœ€ć‡±ć‰Čć‰Žć‰”ć‰©ć‹žć‹ć‹›ćšćŽ„ć•»ć–€ć–§ć•Œć–Šć–ć–˜ć–‚ć–œć–Șć–”ć–‡ć–‹ć–ƒć–łć–źć–Ÿć”Ÿć–Čć–šć–»ć–Źć–±ć•Ÿć–‰ć–«ć–™ćœć Żć Șć Žć €ć °ć ±ć Ąć ć  ćŁčćŁșć„ "], -["b440","ć©·ćȘšć©żćȘ’ćȘ›ćȘ§ć­łć­±ćŻ’ćŻŒćŻ“ćŻć°Šć°‹ć°±ć”Œć”ćŽŽć”‡ć·œćč…ćžœćč€ćčƒćčŸć»Šć»ć»‚ć»„ćŒŒćœ­ćŸ©ćŸȘćŸšæƒ‘æƒĄæ‚Čæ‚¶æƒ æ„œæ„Łæƒșæ„•æƒ°æƒ»æƒŽæ…šæƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽŁæŽŒææ€æ©æ‰æ†æ"], -["b4a1","æ’æŁææĄæ–æ­æźæ¶æŽæȘ換摒揚æčæ•žæ•Šæ•ąæ•Łæ–‘æ–æ–Żæ™źæ™°æ™Žæ™¶æ™Żæš‘æ™șæ™Ÿæ™·æ›Ÿæ›żæœŸæœæŁșæŁ•æŁ æŁ˜æŁ—æ€…æŁŸæŁ”æŁźæŁ§æŁčæŁ’æŁČæŁŁæŁ‹æŁæ€æ€’æ€ŽæŁ‰æŁšæ„źæŁ»æŹŸæŹșæŹœæź˜æź–æźŒæŻŻæ°źæ°Żæ°ŹæžŻæžžæč”æžĄæžČæč§æčŠæž æž„æžŁæž›æč›æč˜æž€æč–æčźæž­æžŠæčŻæžŽæčæžșæžŹæčƒæžæžŸæ»‹"], -["b540","æș‰æž™æčŽæčٿ脿čȿ詿čŸç„™ç„šç„Šç„°ç„Ąç„¶ç…źç„œç‰ŒçŠ„çŠ€çŒ¶çŒ„猎猩çșçȘ琳琹琄琔琶琎琯琛琊琚甄甊畫ç•Șç—ąç—›ç—Łç—™ç—˜ç—žç— ç™»ç™Œçš–çš“çšŽç›œççŸ­çĄçĄŹçĄŻçšçšˆçš‹çš…çš€çȘ˜"], -["b5a1","çȘ—çȘ–ç«„ç«Łç­‰ç­–ç­†ç­ç­’ç­”ç­ç­‹ç­ç­‘çȟçȄ甞甐甚甕玫生ç”Čç”Ąç”Šç”ąç”°ç”łć–„çż”çż•è€‹è’è‚…è…•è…”è…‹è…‘è…Žè„čè…†è„Ÿè…Œè…“è…Žèˆ’èˆœè©èƒèžèè è…è‹èèŻè±èŽè‘—èŠè°èŒèŒèœèČèŠèžèŽè„èœè‡è”èŸè™›è›Ÿè›™è›­è›”è››è›€è›è›žèĄ—èŁèŁ‚èą±èŠƒèŠ–èš»è© è©•è©žèšŒè©"], -["b640","詔詛詐詆蚎èšșèš¶è©–è±ĄèȂèČŻèČŒèČłèČœèłèČ»èł€èČŽèČ·èȶèČżèČžè¶Šè¶…è¶è·Žè·è·‹è·šè·‘è·Œè·›è·†è»»è»žè»ŒèŸœé€źé€”é€±é€žé€Čé€¶é„‚éƒ”é„‰éƒŸé…Łé…„é‡éˆ”éˆ•éˆŁéˆ‰éˆžéˆéˆéˆ‡éˆ‘é–”é–é–‹é–‘"], -["b6a1","間閒閎隊階隋陜隅隆隍é™Č隄雁雅雄集雇雯é›Č韌項順須飧éŁȘ飯飩éŁČéŁ­éŠźéŠ­é»ƒé»é»‘äș‚ć‚­ć‚”ć‚Čć‚łćƒ…ć‚Ÿć‚Źć‚·ć‚»ć‚Żćƒ‡ć‰żć‰·ć‰œć‹Ÿć‹Šć‹€ć‹ąć‹ŁćŒŻć—Ÿć—šć—“ć—Šć—Žć—œć—‡ć—‘ć—Łć—€ć—Żć—šć—Ąć—…ć—†ć—„ć—‰ćœ’ćœ“ćĄžćĄ‘ćĄ˜ćĄ—ćĄšćĄ”ćĄ«ćĄŒćĄ­ćĄŠćĄąćĄ’ćĄ‹ć„§ć«ć«‰ć«ŒćȘŸćȘœćȘŒ"], -["b740","ćȘłć«‚ćȘČ攩支ćčŒćččć»‰ć»ˆćŒ’ćœ™ćŸŹćŸźæ„šæ„æ…ˆæ„Ÿæƒłæ„›æƒčæ„æ„ˆæ…Žæ…Œæ…„æ…æ„Ÿæ„Žæ„§æ„æ„†æ„·æˆĄæˆąæ“æŸæžæȘæ­æœæŹææœæ”ææ¶æ–æ—æ†æ•Źæ–Ÿæ–°æš—æš‰æš‡æšˆæš–æš„æš˜æšæœƒæŠ”æ„­"], -["b7a1","愚愷愠愔愔怰抂愊愚愫愞愓æ„čæŠ†æ„æ„Łæ„›æ­‡æ­ČæŻ€æźżæŻ“æŻœæșąæșŻæ»“æș¶æ»‚æșæșæ»‡æ»…æș„æș˜æșŒæșșæș«æ»‘æș–æșœæ»„æ»”æșȘæș§æșŽç…Žç…™ç…©ç…€ç…‰ç…§ç…œç…Źç…Šç…Œç…„煞煆煹煖çˆșç‰’çŒ·ç…çŒżçŒŸç‘Żç‘šç‘•ç‘Ÿç‘žç‘çżç‘™ç‘›ç‘œç•¶ç•žç˜€ç—°ç˜ç—Č痱ç—șç—żç—Žç—łç›žç›Ÿç›ç«çŠçžçŁ"], -["b840","çčçȘçŹçœç„çšçąçŸźçąŽçą°çą—çą˜çąŒçą‰çĄŒçą‘çą“çĄżç„șç„żçŠèŹçŠœçšœçššçš çš”çšŸçšžçȘŸçȘ ç­·çŻ€ç­ ç­źç­§çȱçČłçȔ經ç”čç¶‘ç¶ç¶ç”›çœźçœ©çœȘçœČçŸ©çŸšçŸ€è–è˜è‚†è‚„è…±è…°è…žè…„è…źè…łè…«"], -["b8a1","è…čè…șè…Šèˆ…è‰‡è’‚è‘·èœè±è‘”è‘Šè‘«è‘‰è‘Źè‘›èŒè”è‘Ąè‘Łè‘©è‘­è‘†è™žè™œè™Ÿè›čèœ“èœˆèœ‡èœ€è›Ÿè›»èœ‚èœƒèœ†èœŠèĄ™èŁŸèŁ”èŁ™èŁœèŁ˜èŁèŁĄèŁŠèŁ•èŁ’èŠœè§Łè©«è©Čè©łè©Šè©©è©°èȘ‡è©Œè©ŁèȘ è©±èȘ…è©­è©ąè©źè©Źè©čè©»èšŸè©šè±ąèȊèČ‰èłŠèł‡èłˆèł„èČČèłƒèł‚èł…è·Ąè·Ÿè·šè·Żè·łè·șè·Ș跀跊èșČ范茉軟茊"], -["b940","蟟èŸČé‹éŠé“é‚é”é€Œé•éé‡ééŽéé‘é€Ÿéé„’é„—é…Źé…Ș酩釉鈷鉗鈞鈜鉀鈟鉛鉋鉀鉑鈎鉉鉍鉅éˆčéˆżé‰šé–˜éš˜éš”éš•é›é›‹é›‰é›Šé›·é›»é›čé›¶é–éŽé¶é é ‘é “é Šé ’é ŒéŁŒéŁŽ"], -["b9a1","éŁœéŁŸéŠłéŠ±éŠŽé«Ąéł©éș‚éŒŽéŒ“éŒ ćƒ§ćƒźćƒ„ćƒ–ćƒ­ćƒšćƒ•ćƒćƒ‘ćƒ±ćƒŽćƒ©ć…ąć‡łćŠƒćŠ‚ćŒ±ćŽ­ć—Ÿć˜€ć˜›ć˜—ć—œć˜”ć˜†ć˜‰ć˜ć˜Žć—·ć˜–ć˜Ÿć˜ˆć˜ć—¶ćœ˜ćœ–ćĄ”ćĄŸćąƒćą“ćąŠćĄčćą…ćĄœćŁœć€„ć€ąć€€ć„Șć„©ć«Ąć«Šć«©ć«—ć«–ć«˜ć«Łć­”ćŻžćŻ§ćŻĄćŻ„ćŻŠćŻšćŻąćŻ€ćŻŸć°ć±ąć¶„ć¶‡ćč›ćčŁćč•ćč—ćč”ć»“ć»–ćŒŠćœ†ćœ°ćŸč慇"], -["ba40","æ„żæ…‹æ…·æ…ąæ…Łæ…Ÿæ…šæ…˜æ…”æˆȘ撇摘摔撀摞摟æ‘ș摑摧搎摭摻æ•Čæ–Ąæ——æ—–æšąæššæšæŠœæŠšæŠ•æ§æŠźæ§“æ§‹æŠ›æŠ·æŠ»æŠ«æŠŽæ§æ§æŠ­æ§ŒæŠŠæ§ƒæŠŁæ­‰æ­Œæ°łæŒłæŒ”æ»ŸæŒ“æ»ŽæŒ©æŒŸæŒ æŒŹæŒæŒ‚æŒą"], -["baa1","æ»żæ»ŻæŒ†æŒ±æŒžæŒČæŒŁæŒ•æŒ«æŒŻæŸˆæŒȘæ»ŹæŒæ»Čæ»Œæ»·ç†”ç†™ç…œç†Šç†„ç†’çˆŸçŠ’çŠ–ç„çç‘€ç‘Łç‘Șç‘°ç‘­ç”„ç–‘ç˜§ç˜ç˜‹ç˜‰ç˜“ç›Ąç›Łçž„çœçżçĄçŁçąŸçą§çąłçą©çąŁçŠŽçŠçŠçšźçš±çȘȘçȘ©ç«­ç«ŻçźĄçź•矋答缗缝缔缏缾缇缄çČčçČœçČŸç¶»ç¶°ç¶œç¶œç¶Ÿç¶ ç·Šç¶Žç¶Čç¶±ç¶ș綹綿綔綞維緒緇綏"], -["bb40","çœ°çż çżĄçżŸèžèšè‚‡è…è†€è†è†ˆè†Šè…żè†‚è‡§è‡șèˆ‡èˆ”èˆžè‰‹è“‰è’żè“†è“„è’™è’žè’Čè’œè“‹è’žè“€è““è’è’Œè“‘è“Šèœżèœœèœ»èœąèœ„èœŽèœ˜è•èœ·èœ©èŁłè€‚èŁŽèŁčèŁžèŁœèŁšè€šèŁŻèȘŠèȘŒèȘžèȘŁèȘèȘĄèȘ“èȘ€"], -["bba1","èȘȘèȘ„èȘšèȘ˜èȘ‘èȘšèȘ§è±ȘèȍèČŒèł“èł‘èł’è”«è¶™è¶•è·ŒèŒ”èŒ’èŒ•èŒ“èŸŁé é˜éœéŁé™éžéąéé›é„™é„˜é„žé…”é…žé…·é…Žé‰žéŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠšé‰ŒéŠ‘é–Ąé–šé–©é–Łé–„é–€éš™éšœéš›é›Œé›’éœ€éŒéž…éŸ¶é —é ˜éąŻéą±é€ƒé€…é€Œé€‰é§éȘŻéȘ°é«Šé­é­‚鳎鳶鳳éșŒéŒ»éœŠć„„ć„€ćƒ»ćƒ”ćƒč愂愈愉愅懜"], -["bc40","抇抈抉抍把拰ćŽČ星昻ć˜čć˜Čć˜żć˜Žć˜©ć™“ć™Žć™—ć™Žć˜¶ć˜Żć˜°ćą€ćąŸćąžćąłćąœćąźćą©ćąŠć„­ćŹ‰ć«»ćŹ‹ć«”ćŹŒćŹˆćŻźćŻŹćŻ©ćŻ«ć±€ć±„ć¶ć¶”ćčąćčŸćčĄć»ąć»šć»Ÿć»ć»Łć» ćœˆćœ±ćŸ·ćŸ”æ…¶æ…§æ…źæ…æ…•æ†‚"], -["bca1","æ…Œæ…°æ…«æ…Ÿæ†§æ†æ†«æ†Žæ†Źæ†šæ†€æ†”æ†źæˆźæ‘©æ‘Żæ‘č撞æ’Čæ’ˆæ’æ’°æ’„æ’“æ’•æ’©æ’’æ’źæ’­æ’«æ’šæ’Źæ’™æ’ąæ’łæ•”æ•·æ•žæšźæš«æšŽæš±æšŁæšŸæ§šæšæšžæš™æ§œæšĄæš“æšŠæ§łæš‚æš…æ§­æš‘æ­æ­Žæź€æŻ…æŻ†æŒżæœŒæŸ„æœ‘æœŠæœ”æŸ†æœ­æœ›æœžæœźæŸŽæœșæœ°æœ€æŸ—æœ˜æ»•æœŻæœ æœŸç†Ÿç†Źç†±ç†šç‰–çŠ›çŽç—ç‘©ç’‹ç’ƒ"], -["bd40","ç‘Ÿç’€ç•żç˜ ç˜©ç˜Ÿç˜€ç˜Šç˜Ąç˜ąçššçšșç›€çžŽçž‡çžŒçž‘çž‹çŁ‹çŁ…çąșçŁŠçąŸçŁ•çąŒçŁçšżçšŒç©€çšœçš·çš»çȘŻçȘźçź­çź±çŻ„çźŽçŻ†çŻ‡çŻçź çŻŒçłŠç· ç·Žç·Żç·»ç·˜ç·Źç·ç·šç·Łç·šç·žç·©ç¶žç·™ç·Čç·čçœ”çœ·çŸŻ"], -["bda1","çż©è€Šè†›è†œè†è† è†šè†˜è”—è”œè”šè“źè”Źè”­è”“è”‘è”Łè”Ąè””è“Źè”„è“żè”†èž‚èŽè¶è èŠèžèšè™è—èŒè“èĄ›èĄè€è€‡è€’è€“è€•è€ŠèȘŒè«’談諄èȘ•請諞èȘČ諉諂èȘżèȘ°è«–諍èȘ¶èȘčè«›è±Œè±Žè±Źèł èłžèłŠèł€èłŹèł­èłąèłŁèłœèłȘèłĄè”­è¶Ÿè¶Łèž«èžèžèžąèžèž©èžŸèžĄèžžèșș茝茛茟茩茊èŒȘ茜茞"], -["be40","èŒ„é©éźéšé­é·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…éŠ»éŠ·é‹ȘéŠŹé‹€é‹éŠłéŠŒé‹’é‹‡é‹°éŠČé–­é–±éœ„éœ†éœ‡éœ‰é éžéž‹éžé Ąé «é œéąłé€Šé€“é€’é€˜é§é§é§Ÿé§›é§‘é§•é§’é§™éȘ·é«źé«ŻéŹ§é­…é­„é­·é­ŻéŽ†éŽ‰"], -["bea1","鎃éș©éșŸé»Žćąšéœ’ć„’ć„˜ć„”ć„ć„•ć†€ć†Șć‡ćŠ‘ćŠ“ć‹łć™™ć™«ć™č晩晀晞ć™Șć™šć™„ć™±ć™Żć™Źć™ąć™¶ćŁćąŸćŁ‡ćŁ…ć„źćŹćŹŽć­žćŻ°ć°ŽćœŠæ†Čæ†‘æ†©æ†Šæ‡æ†¶æ†Ÿæ‡Šæ‡ˆæˆ°æ“…æ“æ“‹æ’»æ’Œæ“šæ“„æ“‡æ“‚æ“æ’żæ“’æ“”æ’Ÿæ•Žæ›†æ›‰æšč曄曇暞暜暞æšș橙橫橘æščæ©„æ©ąæ©Ąæ©‹æ©‡æš”æ©Ÿæ©ˆæ­™æ­·æ°…æż‚æŸ±æŸĄ"], -["bf40","æżƒæŸ€æżæŸ§æŸłæż€æŸč柶柊柠柎熟燉燐燒燈燕ç†č燎燙燜燃燄獹璜璣璘璟璞瓱甌甍瘮瘾ç˜șç›§ç›„çž çžžçžŸçž„çŁšçŁšçŁŹçŁ§çŠŠç©ç©Žç©†ç©Œç©‹çȘș篙簑築節篛篥篩篊糕糖瞊"], -["bfa1","羑羈羛羣羞羝羉羐çœčçŸČçż°çż±çżźè€šè†łè†©è†šè‡»èˆˆè‰˜è‰™è•Šè•™è•ˆè•šè•©è•ƒè•‰è•­è•Șè•žèžƒèžŸèžžèžąèžèĄĄè€Șè€Čè€„è€«è€ĄèŠȘ芊諊è«șè««è«±èŹ€è«œè«§è«źè«ŸèŹèŹ‚è«·è«­è«łè«¶è«Œè±«è±­èČ“èłŽèč„螱螎èč‚èžčèž”èŒ»èŒŻèŒžèŒłèŸšèŸŠé”éŽéžéČ遌éșé„Žé†’éŒ éŒ¶é‹žéŒłéŒŻéŒąé‹ŒéŒ«éŒ„éŒš"], -["c040","éŒéŒŠéŒĄéŒ•éŒźéŒ™é–»éš§éššéšȘ雕霎霑霖霍霓霏靛靜靊鞘頰頞頻頷頭é č頀逐通逞逛逥通駭駹駱éȘžéȘŒé«»é«­éŹšéź‘éŽ•éŽŁéŽŠéŽšéŽ’éŽ›é»˜é»”éŸéŸœć„Ș感愡ć„Č拔暎暀暐暅暇"], -["c0a1","暏棕棓棑棎欰ćŹȘ揀ć­șć°·ć±šć¶Œć¶șć¶œć¶žćč«ćœŒćŸœæ‡‰æ‡‚懇懊懋æˆČæˆŽæ“Žæ“Šæ“˜æ“ æ“°æ“Šæ“Źæ“±æ“ąæ“­æ–‚æ–ƒæ›™æ›–æȘ€æȘ”æȘ„æȘąæȘœæ«›æȘŁæ©ŸæȘ—æȘæȘ æ­œæźźæŻšæ°ˆæż˜æż±æżŸæż æż›æż€æż«æżŻæŸ€æżŹæżĄæż©æż•æżźæż°ç‡§ç‡Ÿç‡źç‡Šç‡„ç‡­ç‡Źç‡Žç‡ çˆ”ç‰†ç°çČ璩環璊璚癆療癌ç›Ș瞳çžȘ瞰瞬"], -["c140","çž§çž­çŸŻçŁ·çŁș磎磯瀁犧çŠȘ穗çȘżç°‡ç°çŻŸçŻ·ç°ŒçŻ çł çłœçłžçłąçłŸçł™çłçžźçžŸçč†çž·çžČçčƒçž«çžœçž±çč…çčçžŽçžčçčˆçž”çžżçžŻçœ„çżłçżŒè±èČè°èŻèłè‡†è‡ƒè†șè‡‚è‡€è†żè†œè‡‰è†Ÿè‡šèˆ‰è‰±è–Ș"], -["c1a1","è–„è•Ÿè–œè–‘è–”è–Żè–›è–‡è–šè–Šè™§èŸ€èŸ‘èžłèŸ’èŸ†èž«èž»èžșèŸˆèŸ‹è€»è€¶è„„è€žè€œèŠŹèŹŽèŹ—èŹ™èŹ›èŹŠèŹ èŹèŹ„èŹè±è°żè±łèłșèłœèłŒèłžèł»è¶šèč‰èč‹èčˆèčŠèœ„èŒŸèœ‚èœ…èŒżéżéœé‚„é‚é‚‚é‚€é„čé†Łé†žé†œééŽ‚éŒšé”éŠé„é‹éŒ˜éŸéŹé›é°éšé”é—Šé—‹é—Œé—ˆé—†éš±éšžé›–éœœéœžéž éŸ“éĄ†éą¶é€”éš"], -["c240","é§żéźźéź«éźȘ韭鎻鎿éș‹é»é»žé»œé»é»›éŒŸéœ‹ćąćš•ćšźćŁ™ćŁ˜ćŹžćœæ‡Łæˆłæ“Žæ“Č擟攆æ“ș擻擷斷曜朊æȘłæȘŹæ«ƒæȘ»æȘžæ«‚æȘźæȘŻæ­Ÿæ­žæźŻç€‰ç€‹æżŸç€†æżșç€‘ç€ç‡»ç‡Œç‡Ÿç‡žç·ç”ç’§ç’żç”•ç™–ç™˜"], -["c2a1","ç™’çžœçžżçž»çžŒç€ŽçŠźç©Ąç©ąç© ç«„ç«…ç°«ç°§ç°Ș簞簣簡糧çč”çč•çčžçčšçčĄçč’çč™çœˆçżčçż»è·è¶è‡è‡èˆŠè—è–©è—è—è—‰è–°è–șè–čè–ŠèŸŻèŸŹèŸČ蟠芆èŠČè§ŽèŹšèŹčèŹŹèŹ«è±èŽ…èč™èčŁèčŠèč€èčŸèč•è»€èœ‰èœé‚‡é‚ƒé‚ˆé†«é†Źé‡éŽ”éŽŠéŽ–éŽąéŽłéŽźéŽŹéŽ°éŽ˜éŽšéŽ—é—”é—–é—é—•é›ąé›œé›™é››é›žéœ€éžŁéžŠ"], -["c340","鞭éŸč額顏題顎顓éąșé€Ÿé€żé€œé€źéŠ„éšŽé«éŹƒéŹ†é­é­Žé­éŻŠéŻ‰éŻœéŻˆéŻ€é”‘é”é” é» éŒ•éŒŹć„łćš„ćŁžćŁŸćŁąćŻ”éŸć»Źæ‡Čæ‡·æ‡¶æ‡”æ”€æ”æ› æ›æ«„æ«æ«šæ«“ç€›ç€Ÿç€šç€šç€ç€•ç€˜çˆ†çˆç‰˜çŠąçž"], -["c3a1","çșç’œç“Šç“Łç–‡ç–†ç™Ÿç™ĄçŸ‡ç€™çŠ±ç©«ç©©ç°Ÿç°żç°žç°œç°·ç±€çč«çč­çččçč©çčȘ矅çčłçŸ¶çŸč矞臘藩藝è—Ș藕藀藄藷蟻蠅蠍èŸč蟟脠脟脖脞譁譜識證譚譎譏譆譙莈莊èčŒèčČèș‡èč¶èčŹèčșèčŽèœ”èœŽèŸ­é‚Šé‚‹é†±é†źéĄé‘éŸéƒéˆéœéé–éąéé˜é€é—éšé—œéšŽé›ŁéœȘéœ§éĄéŸœéŸ»éĄž"], -["c440","éĄ˜éĄ›éąŒé„…é„‰éš–éš™éŹéŻšéŻ§éŻ–éŻ›é¶‰é”Ąé”Čé”Ș锏éș’éș—éș“éșŽć‹žćššćš·ćš¶ćšŽćšŒćŁ€ć­€ć­ƒć­œćŻ¶ć·‰æ‡žæ‡șæ”˜æ””æ”™æ›Šæœ§æ«Źç€Ÿç€°ç€Čçˆç»ç“ç™ąç™„ç€Šç€Șç€Źç€«ç«‡ç«¶ç±Œç±ƒç±çłŻçł°èŸźçčœçčŒ"], -["c4a1","çș‚県耀臚艊藻è—č蘑è—ș蘆蘋蘇蘊蠔蠕脀èŠșè§žè­°è­Źè­Šè­Żè­Ÿè­«èŽèŽèș‰èșèș…èș‚é†Žé‡‹é˜éƒéœé—Ąéœ°éŁ„é„’é„‘éŠšéš«éš°éš·éš”é°“é°éččéș”é»šéŒŻéœŸéœŁéœĄć„·ć„žć›ć›€ć›‚ć€”ć±Źć·æ‡Œæ‡Ÿæ”æ”œæ–•æ›©æ«»æŹ„æ«șæźČ灌爛犧瓖瓔癩矓籐çșçșŒçŸŒè˜—è˜­è˜šè Łè ąè Ąè Ÿè„Șè„ŹèŠœè­Ž"], -["c540","護譜莓èșŠèșèș‹èœŸèŸŻé†ș鐟鐳鐔éș鐞éČé«é—ąéœžéœčéœČéŸżéĄ§éĄ„é„—é©…é©ƒé©€éšŸé«é­”é­‘é°­é°„é¶Żé¶Žé·‚é¶žéșé»ŻéŒ™éœœéœŠéœ§ć„Œć„»ć›ˆć›Šć›‰ć­żć·”ć·’ćœŽæ‡żæ”€æŹŠæ­Ąç‘ç˜çŽ€ç“€ç–Šç™źç™Ź"], -["c5a1","çŠłç± ç±ŸèŸèœè‡Ÿè„Čè„Żè§Œèź€èŽ–èŽ—èș‘èș“èœĄé…ˆé‘„é‘‘é‘’éœœéœŸéŸƒéŸéĄ«é„•é©•é©é«’éŹšé±‰é°±é°Ÿé°»é·“é·—éŒŽéœŹéœȘéŸ”ć›Œć·–æˆ€æ”Łæ”«æ”Șæ›ŹæŹç“šç«Šç±€ç±Łç±„çș“çș–çș”è‡ąè˜žè˜żè ±èźŠé‚é‚é‘Łé‘ é‘€éšéĄŻé„œé©šé©›é©—é«“é«”é«‘é±”é±—é±–é·„éșŸé»Žć›‘ćŁ©æ”Źçžç™±ç™Č矗眐矈蠶è čèĄąèź“èź’"], -["c640","èź–è‰·èŽ›é‡€é‘Șé‚éˆé„éŸ†éĄ°é©ŸéŹąé­˜é±Ÿé·čé·șéčŒéčœéŒ‡éœ·éœČć»łæŹ–çŁç±Źç±źè »è§€èșĄé‡é‘Čé‘°éĄ±é„žé«–éŹŁé»Œç€çŸšèźšé‘·éŸ‰é©ąé©„çșœèźœèșȘé‡…é‘œé‘Ÿé‘Œé±·é±žé»·è±”é‘żéžšçˆšé©Ș鏱鞛鞞ç±Č"], -["c940","äč‚äčœć‡”挚掂侇侌äč‡äșć›—ïšŒć±źćœłäžć†‡äžŽäžźäș“ä»‚ä»‰ä»ˆć†˜ć‹ŒćŹćŽčćœ ć€ƒć€Źć°ć·żæ—ĄæźłæŻŒæ°”çˆżäž±äžŒä»šä»œä»©ä»Ąä»ä»šćˆŒćŒœćŒćœąćœŁć€—ć€Żćźćź„ć°’ć°»ć±Žć±łćž„ćș€ćș‚ćż‰æˆ‰æ‰æ°•"], -["c9a1","æ°¶æ±ƒæ°żæ°»çŠźçŠ°çŽŠçŠžè‚Šé˜žäŒŽäŒ˜äŒŹä»”äŒ”ä»±äŒ€ä»·äŒˆäŒäŒ‚äŒ…äŒąäŒ“äŒ„ä»ŽäŒ’ć†±ćˆ“ćˆ‰ćˆćŠŠćŒąćŒŸććŽŠć‡ć›Ąć›ŸćœźćœȘćœŽć€ŒćŠ€ć„ŒćŠ…ć„»ć„Ÿć„·ć„żć­–ć°•ć°„ć±Œć±șć±»ć±Ÿć·Ÿćč”ćș„ćŒ‚ćŒšćœŽćż•ćż”ćżæ‰œæ‰žæ‰€æ‰Ąæ‰Šæ‰ąæ‰™æ‰ æ‰šæ‰„æ—Żæ—źæœŸæœč朞朻æœșæœżæœŒæœłæ°˜æ±†æ±’æ±œæ±æ±Šæ±”æ±‹"], -["ca40","汌灱牞犎犔玎ç”Șç™żç©”çœ‘è‰žè‰ŒèŠ€è‰œè‰żè™è„Ÿé‚™é‚—é‚˜é‚›é‚”é˜ąé˜€é˜ é˜Łäœ–äŒ»äœąäœ‰äœ“äœ€äŒŸäœ§äœ’äœŸäœäœ˜äŒ­äŒłäŒżäœĄć†ć†č戜戞戡抭押按捣ćČćŽŽćŽć°ć·ćȘć‘”ć‘…ć™ćœć„ć˜"], -["caa1","ćœć‘ć‘ćšć€ć‘‡ć›źć›§ć›„ćć…ćŒć‰ć‹ć’ć€†ć„€ćŠŠćŠ˜ćŠ ćŠ—ćŠŽćŠąćŠćŠćŠ§ćŠĄćźŽćź’ć°šć°ȘćȍćȏćȈćȋćȉćȒćȊćȆćȓćȕ淠枊枎ćș‹ćș‰ćșŒćșˆćșćŒ…ćŒćœžćœ¶ćż’ćż‘ćżćż­ćżšćżźćżłćżĄćż€ćżŁćżșćżŻćż·ćż»æ€€ćżŽæˆș抃抌抎抏抔抇扱扻æ‰ș扰抁抈扷扜æ‰Čæ‰Žæ”·æ—°æ—Žæ—łæ—Č旔杅杇"], -["cb40","æ™æ•æŒæˆæææšæ‹æŻæ°™æ°šæ±žæ±§æ±«æČ„æČ‹æČæ±±æ±Żæ±©æČšæ±­æČ‡æČ•æČœæ±Šæ±łæ±„æ±»æČŽçŽçșç‰ŁçŠżçŠœç‹ƒç‹†ç‹çŠș狅玕玗玓玔玒ç”șç”č疔疕皁瀜耎肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","èŠŠèŠƒèŠ„è±žèż‰èŸżé‚Ÿé‚Ąé‚„é‚žé‚§é‚ é˜°é˜šé˜Żé˜­äžłäŸ˜äœŒäŸ…äœœäŸ€äŸ‡äœ¶äœŽäŸ‰äŸ„äœ·äœŒäŸ—äœȘ䟚äœčäŸäœžäŸäŸœäŸ”äŸžäŸ’äŸ‚äŸ•äœ«äœźć†žć†Œć†Ÿćˆ”ćˆČćˆłć‰†ćˆ±ćŠŒćŒŠćŒ‹ćŒŒćŽ’ćŽ”ć’‡ć‘żć’ć’‘ć’‚ć’ˆć‘«ć‘șć‘Ÿć‘„ć‘Źć‘Žć‘Šć’ć‘Żć‘Ąć‘ ć’˜ć‘Łć‘§ć‘€ć›·ć›č杯ćČć­ć«ć±ć°ć¶ćž€ć”ć»ćłćŽćą"], -["cc40","ćšćœć€Œć„…ćŠ”ćŠș槏槎ćŠČć§Œć§ćŠ¶ćŠŒć§ƒć§–ćŠ±ćŠœć§€ć§ˆćŠŽć§‡ć­ąć­„ćź“ćź•ć±„ć±‡ćČźćČ€ćČ ćČ”ćČŻćČšćČŹćȟćČŁćČ­ćČąćČȘćȧćȝćČ„ćȶćȰćČŠćž—ćž”ćž™ćŒšćŒąćŒŁćŒ€ćœ”ćŸ‚ćœŸćœœćżžćż„æ€­æ€Šæ€™æ€Č怋"], -["cca1","æ€Žæ€Šæ€—æ€łæ€šæ€žæ€Źæ€ąæ€æ€æ€źæ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆœæŠ­æŠŽæ‹‘æŠŸæŠȘæŠ¶æ‹ŠæŠźæŠłæŠŻæŠ»æŠ©æŠ°æŠžæ”œæ–šæ–»æ˜‰æ—Œæ˜„æ˜’æ˜ˆæ—»æ˜ƒæ˜‹æ˜æ˜…æ—œæ˜‘æ˜æ›¶æœŠæž…æŹæžŽæž’æ¶æ»æž˜æž†æž„æŽæžæžŒæș枟枑枙枃杜极杞æčæž”æŹ„æź€æ­ŸæŻžæ°æČ“æłŹæł«æłźæł™æČ¶æł”æČ­æł§æČ·æłæł‚æČșæłƒæł†æł­æłČ"], -["cd40","æł’æłæČ޿ȊæČæČ€æłžæł€æŽ°æłæł‡æČ°æłčæłæł©æł‘ç‚”ç‚˜ç‚…ç‚“ç‚†ç‚„ç‚‘ç‚–ç‚‚ç‚šç‚ƒç‰Șç‹–ç‹‹ç‹˜ç‹‰ç‹œç‹’ç‹”ç‹šç‹Œç‹‘çŽ€çŽĄçŽ­çŽŠçŽąçŽ çŽŹçŽç“ç“šç”żç•€ç”Ÿç–Œç–˜çšŻç›łç›±ç›°ç›”çŸžçŸŒçŸč矻çŸș"], -["cda1","çŸ·ç„‚ç€żç§…ç©žç©»ç«»ç±”çłœè€”è‚è‚źè‚Łè‚žè‚”è‚­èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠ”èŠ§èŠźèŠŒèŠžèŠșèŠŽèŠšèŠĄèŠ©è‹‚èŠ€è‹ƒèŠ¶èŠąè™°è™Żè™­è™źè±–èż’èż‹èż“èżèż–èż•èż—é‚Č邮邯邳邰é˜č阜阌é˜ș陃俍俅俓äŸČäż‰äż‹äżäż”äżœäż™äŸ»äŸłäż›äż‡äż–äŸș俀äŸčäżŹć‰„ć‰‰ć‹€ć‹‚ćŒœćŒćŽ—ćŽ–ćŽ™ćŽ˜ć’șć’Ąć’­ć’„ć“"], -["ce40","ć“ƒèŒć’·ć’źć“–ć’¶ć“…ć“†ć’ ć‘°ć’Œć’ąć’Ÿć‘Čć“žć’°ćž”ćžžćžŸćž€ćžŒćž—ćžćž›ćž”ćž˜ćžćž™ćž„ćžšćž•ćŁŽć€ć„“ć§Ąć§žć§źćš€ć§±ć§ć§șć§œć§Œć§¶ć§€ć§Čć§·ć§›ć§©ć§łć§”ć§ ć§Ÿć§Žć§­ćźšć±Œćłćł˜ćłŒćł—ćł‹ćł›"], -["cea1","泞泚泉泇泊泖泓泔泏泈泆泎泟泾ć·č枥枹枣枠枀ćș°ćș€ćșąćș›ćșŁćș„ćŒ‡ćŒźćœ–ćŸ†æ€·æ€č恔æČæžæ…æ“æ‡æ‰æ›æŒæ€æ‚æŸæ€€æ„æ˜æŠæźæ‰‚æ‰ƒæ‹æŒæŒ‹æ‹”æŒŽæŒƒæ‹«æ‹č挏挌拞拶挀挓挔æ‹ș挕拻拰敁敃æ–Șæ–żæ˜¶æ˜Ąæ˜Čæ˜”æ˜œæ˜Šæ˜ąæ˜łæ˜«æ˜ș昝明æ˜čæ˜źæœæœæŸæŸČ柈æžș"], -["cf40","æŸœæž»æŸžæŸ˜æŸ€æž·æŸ…æŸ«æŸ€æŸŸæž”æŸæžłæŸ·æŸ¶æŸźæŸŁæŸ‚æžč柎柧柰æžČæŸŒæŸ†æŸ­æŸŒæžźæŸŠæŸ›æŸș柉柊柃æŸȘæŸ‹æŹšæź‚æź„æź¶æŻ–æŻ˜æŻ æ° æ°ĄæŽšæŽŽæŽ­æŽŸæŽŒæŽżæŽ’æŽŠæłšæŽłæŽ„æŽ™æŽș掚掑掀掝攂"], -["cfa1","æŽæŽ˜æŽ·æŽƒæŽæ”€æŽ‡æŽ æŽŹæŽˆæŽąæŽ‰æŽç‚·ç‚Ÿç‚Ÿç‚±ç‚°ç‚Ąç‚Žç‚”ç‚©ç‰ç‰‰ç‰Šç‰Źç‰°ç‰łç‰źç‹Šç‹€ç‹šç‹«ç‹Ÿç‹Ș狩狣玅珌珂珈珅çŽčçŽ¶çŽ”çŽŽç«çŽżç‡çŽŸçƒç†çŽžç‹ç“Źç“źç”źç•‡ç•ˆç–§ç–Șç™č盄眈眃眄眅眊盷盻ç›ș矧矚砆砑砒砅砐砏砎砉砃砓焊焌焋焅焄秕种秏秖秎çȘ€"], -["d040","ç©Ÿç«‘çŹ€çŹç±ș籞ç±č籿çȀçČçŽƒçŽˆçŽçœ˜çŸ‘çŸçŸŸè€‡è€Žè€è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒèƒ…èƒŁèƒ™èƒœèƒŠèƒ•èƒ‰èƒèƒ—èƒŠèƒè‡żèˆĄèŠ”è‹™è‹Ÿè‹č茇苚茀苕èŒșè‹«è‹–è‹Žè‹Źè‹Ąè‹Č苔茌苻苶苰è‹Ș"], -["d0a1","苀苠è‹șè‹łè‹­è™·è™Žè™Œè™łèĄèĄŽèĄ§èĄȘèĄ©è§“èš„èš‡è”ČèżŁèżĄèżźèż éƒ±é‚œé‚żéƒ•éƒ…é‚Ÿéƒ‡éƒ‹éƒˆé‡”é‡“é™”é™é™‘é™“é™Šé™Žć€žć€…ć€‡ć€“ć€ąć€°ć€›äż”äżŽć€łć€·ć€Źäż¶äż·ć€—ć€œć€ ć€§ć€”ć€Żć€±ć€Žć…šć†”ć†“ć‡Šć‡„ć‡…ć‡ˆć‡Žć‰Ąć‰šć‰’ć‰žć‰Ÿć‰•ć‰ąć‹ćŒŽćŽžć”Šć“ąć”—ć”’ć“§ć“łć“€ć”šć“żć”„ć”ˆć“«ć”‘ć”…ć“±"], -["d140","ć”Šć“»ć“·ć“žć“ ć”Žć”ƒć”‹ćœćœ‚ćŸŒć Č柕柒ćžșćŸ†ćžœćžŒćžžćž¶ćžżćŸ‡ćŸćžčćŸć€Žć„Šćš™ćš–ćš­ćšźćš•ćšćš—ćšŠćšžćšłć­Źćź§ćź­ćźŹć°ƒć±–ć±”ćłŹćłżćłźćł±ćł·ćŽ€ćłč枩枚ćșšćșźćșȘćșŹćŒłćŒ°ćœ§ææšæ§"], -["d1a1","ææ‚ąæ‚ˆæ‚€æ‚’æ‚æ‚æ‚ƒæ‚•æ‚›æ‚—æ‚‡æ‚œæ‚Žæˆ™æ‰†æ‹ČæŒæ–æŒŹæ„æ…æŒ¶æƒæ€æŒčæ‹æŠæŒŒæŒ©ææŒŽæ˜æ”æ™æŒ­æ‡æŒłæšæ‘æŒžæ—æ€æˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæĄ‰æ Čæ łæ »æĄ‹æĄæ –æ ±æ œæ ”æ «æ ­æ ŻæĄŽæĄ„æ Žæ æ ’æ ”æ Šæ šæ źæĄæ șæ „æ  æŹŹæŹŻæŹ­æŹ±æŹŽæ­­è‚‚æźˆæŻŠæŻ€"], -["d240","æŻšæŻŁæŻąæŻ§æ°„æ”șæ”Łæ”€æ”¶æŽæ”Ąæ¶’æ”˜æ”ąæ”­æ”Żæ¶‘æ¶æ·Żæ”żæ¶†æ”žæ”§æ” æ¶—æ”°æ”Œæ”Ÿæ¶‚æ¶˜æŽŻæ”šæ¶‹æ”Ÿæ¶€æ¶„æŽ–æ¶ƒæ”»æ”œæ””æ¶çƒœçƒ“çƒ‘çƒçƒ‹çŒč烱烗烒烞烠烔烍烅烆烇烚烎烡牂牾"], -["d2a1","牷牶猀ç‹șç‹Žç‹Ÿç‹¶ç‹łç‹»çŒç“ç™ç„ç–çŽŒç§çŁç©çœç’ç›ç”ççšç—ç˜çšç“žç“Ÿç“Žç“”ç”Ąç•›ç•Ÿç–°ç—ç–»ç—„ç—€ç–żç–¶ç–șçšŠç›‰çœçœ›çœçœ“çœ’çœŁçœ‘çœ•çœ™çœšçœąçœ§ç Łç Źç ąç ”ç Żç šç źç «ç Ąç ©ç łç Șç ±ç„”ç„›ç„ç„œç„“ç„’ç„‘ç§«ç§Źç§ ç§źç§­ç§Ș秜秞秝çȘ†çȘ‰çȘ…çȘ‹çȘŒçȘŠçȘ‡ç«˜çʐ"], -["d340","笄笓笅笏笈笊笎笉笒çȄçȑçȊçȌçȈçȍçČ…çŽžçŽçŽ‘çŽŽçŽ˜çŽ–çŽ“çŽŸçŽ’çŽçŽŒçœœçœĄçœžçœ çœçœ›çŸ–çŸ’çżƒçż‚çż€è€–è€Ÿè€čèƒșèƒČèƒčèƒ”è„èƒ»è„€èˆèˆŻèˆ„èŒłèŒ­è„èŒ™è‘èŒ„è–èŒżèèŒŠèŒœèŒą"], -["d3a1","荂荎茛èŒȘèŒˆèŒŒèèŒ–èŒ€èŒ èŒ·èŒŻèŒ©è‡è…èŒè“èŒžèŒŹè‹èŒ§èˆè™“è™’èšąèššèš–èšèš‘èšžèš‡èš—èš†èš‹èššèš…èš„èš™èšĄèš§èš•èš˜èšŽèšèšèš”èĄƒèĄ„èĄ­èĄ”èĄ¶èĄČèą€èĄ±èĄżèĄŻèąƒèĄŸèĄŽèĄŒèš’è±‡è±—è±»èČ€èČŁè”¶è”žè¶”è¶·è¶¶è»‘è»“èżŸèż”é€‚èżżèż»é€„èżŒèż¶éƒ–éƒ éƒ™éƒšéƒŁéƒŸéƒ„éƒ˜éƒ›éƒ—éƒœéƒ€é…"], -["d440","é…Žé…é‡•é‡ąé‡šé™œé™ŸéšŒéŁŁé«ŸéŹŻäčżć°ćȘ恡恞恠恓恋恝ćČćˆććć›ćŠćąć€•ć…ćŸć©ć«ćŁć€ć†ć€ćźćłć—ć‘ć‡ć‰«ć‰­ć‰Źć‰źć‹–ć‹“ćŒ­ćŽœć•”ć•¶ć”Œć•ć•ć”Žć”Ș救敹收攔攰敒故"], -["d4a1","攌ć”Č敄敎ć”čć•ˆć”­ć”»ć•€ć•‹ćœŠćœ‡ćŸ»ć ”ćŸąćŸ¶ćŸœćŸŽć €ćŸ­ćŸœć ˆćŸžć ‹ćŸłćŸć ‡ćŸźćŸŁćŸČćŸ„ćŸŹćŸĄć ŽćŸŒć ćŸ§ć ć ŒćŸ±ćŸ©ćŸ°ć ć „ć„œć© ć©˜ć©•ć©§ć©žćšžćš”ć©­ć©ć©Ÿć©„ć©Źć©“ć©€ć©—ć©ƒć©ć©’ć©„ć©›ć©ˆćȘŽćšŸć©ćščć©Œć©°ć©©ć©‡ć©‘ć©–ć©‚ć©œć­Čć­źćŻćŻ€ć±™ćŽžćŽ‹ćŽćŽšćŽ ćŽŒćŽšćŽćŽŠćŽ„ćŽ"], -["d540","ćŽ°ćŽ’ćŽŁćŽŸćŽźćžŸćžŽćș±ćșŽćșčćșČćșłćŒ¶ćŒžćŸ›ćŸ–ćŸŸæ‚Šæ‚æ‚†æ‚Ÿæ‚°æ‚șæƒ“æƒ”æƒæƒ€æƒ™æƒæƒˆæ‚±æƒ›æ‚·æƒŠæ‚żæƒƒæƒæƒ€æŒČæ„æŽŠæŽ‚æœæŽœæŽžæŽ­æŽæŽ—æŽ«æŽŽæŻæŽ‡æŽæźæŽŻæ”æŽœæ­æŽźæŒæŽ€æŒ»æŽŸ"], -["d5a1","æžæŽ…æŽæŽ‘æŽæ°æ•“æ—æ™„æ™Ąæ™›æ™™æ™œæ™ąæœ˜æĄčæą‡æąæąœæĄ­æĄźæąźæą«æ„–æĄŻæąŁæąŹæą©æĄ”æĄŽæąČæąæĄ·æą’æĄŒæĄ«æĄČæąȘæą€æĄ±æĄŸæą›æą–æą‹æą æą‰æą€æĄžæĄ»æą‘æąŒæąŠæĄœæŹ¶æŹłæŹ·æŹžæź‘æźæźæźŽæźŒæ°Șæ·€æ¶«æ¶Žæ¶łæčŽæ¶Źæ·©æ·ąæ¶·æ·¶æ·”枀淈淠淟淖涟淄淜淝淛淎淊涜淭淰æ¶ș淕淂淏淉"], -["d640","淐æ·Čæ·“æ·œæ·—æ·æ·Łæ¶»çƒșç„çƒ·ç„—çƒŽç„Œçƒ°ç„„çƒłç„çƒŒçƒżç„†ç„“ç„€çƒžçƒ¶ç„‹ç„‚ç„Žç‰Ÿç‰»ç‰Œç‰żçŒçŒ—çŒ‡çŒ‘çŒ˜çŒŠçŒˆç‹żçŒçŒžçŽˆç¶çžç”ç„ççœç‡ç€çșçŒçżçŒç‹çŽçˆç•€ç•Łç—Žç—’ç—"], -["d6a1","痋痌痑痐皏皉盓çœčçœŻçœ­çœ±çœČçœŽçœłçœœçœ„çœ»çœ”çĄˆçĄ’çĄ‰çĄçĄŠçĄŒç ŠçĄ…çĄç„€ç„§ç„©ç„Ș焣焫焥犻ç§șç§žç§¶ç§·çȘçȘ”çȘçŹ”ç­‡çŹŽçŹ„çŹ°çŹąçŹ€çŹłçŹ˜çŹȘçŹçŹ±çŹ«çŹ­çŹŻçŹČ笾笚笣çȔçȘçȖçČŁçŽ”çŽœçŽžçŽ¶çŽșç”…çŽŹçŽ©ç”ç”‡çŽŸçŽżç”ŠçŽ»çŽšçœŁçŸ•çŸœçŸçŸ›çżŠçż‹çżçżçż‘çż‡çżçż‰è€Ÿ"], -["d740","è€žè€›è‡èƒèˆè„˜è„„è„™è„›è„­è„Ÿè„Źè„žè„Ąè„•è„§è„è„ąèˆ‘èˆžèˆłèˆș舎èˆČè‰ŽèŽèŽŁèŽšèŽèșèłèŽ€èŽèŽèŽèŽ•èŽ™è”èŽ”èŽ©èœèŽƒèŽŒèŽèŽ›èŽȘèŽ‹èŸèŽ„èŽŻèŽˆèŽ—èŽ°èżèŽŠèŽ‡èŽźè¶èŽšè™™è™–èšżèš·"], -["d7a1","蛂蛁蛅èšș蚰蛈èščèšłèšžè›ŒèšŽèš»èšŒè›ƒèšœèšŸèĄ’èą‰èą•èąšèąąèąȘèąšèą‘èąĄèąŸèą˜èą§èą™èą›èą—èą€èąŹèąŒèą“èąŽèŠ‚è§–è§™è§•èš°èš§èšŹèšžè°č谻豜豝豜èČ„è”œè”»è”č趌跂è¶čè¶żè·è»˜è»žè»è»œè»—è» è»Ąé€€é€‹é€‘é€œé€Œé€ĄéƒŻéƒȘ郰郎éƒČéƒłéƒ”éƒ«éƒŹéƒ©é…–é…˜é…šé…“é…•é‡Źé‡Žé‡±é‡łé‡žé‡€é‡čé‡Ș"], -["d840","釫釷釚釟é•șé–†é–ˆé™Œé™­é™«é™±é™ŻéšżéȘé „éŁ„éŠ—ć‚›ć‚•ć‚”ć‚žć‚‹ć‚Łć‚ƒć‚Œć‚Žć‚ćšć‚œć‚’ć‚‚ć‚‡ć…Ÿć‡”ćŒ’ćŒ‘ćŽ€ćŽ§ć–‘ć–šć–„ć–­ć•·ć™…ć–ąć–“ć–ˆć–ć–”ć–ć–Łć–’ć–€ć•œć–Œć–Šć•żć–•ć–Ąć–ŽćœŒć ©ć ·"], -["d8a1","ć ™ć žć §ć Łć šćŸ”ćĄˆć „ć œć ›ć łć żć ¶ć źć č栞栭栏栻愥ćȘŻćȘ”ćȘŸć©șćȘąćȘžć©žćȘŠć©ŒćȘ„ćȘŹćȘ•ćȘźćš·ćȘ„ćȘŠćȘ—ćȘƒćȘ‹ćȘ©ć©»ć©œćȘŒćȘœćȘćȘ“ćȘćŻȘćŻćŻ‹ćŻ”ćŻ‘ćŻŠćŻŽć°Œć°°ćŽ·ć”ƒć”«ć”ć”‹ćŽżćŽ”ć”‘ć”Žć”•ćŽłćŽșć”’ćŽœćŽ±ć”™ć”‚ćŽčć”‰ćŽžćŽŒćŽČ掶攀攅ćč„ćčćœ˜ćŸŠćŸ„ćŸ«æƒ‰æ‚čæƒŒæƒąæƒŽæƒ„æ„”"], -["d940","æƒČæ„Šæ„–æ„…æƒ”æ„“æƒžæƒŒæƒŸæƒæ„ƒæ„˜æ„æ„æƒżæ„„æ„‹æ‰ŠæŽ”æŽ±æŽ°æŽæ„æšæŻæƒæ’æłæŠæ æ¶æ•æČæ”æ‘ĄæŸæŽŸææœæ„æ˜æ“æ‚æ‡æŒæ‹æˆæ°æ—æ™æ”Č敧æ•Șæ•€æ•œæ•šæ•„æ–Œæ–æ–žæ–źæ—æ—’"], -["d9a1","æ™Œæ™Źæ™»æš€æ™±æ™čæ™Șæ™Čæœæ€ŒæŁ“æ€„æŁœæ€ȘæŁŹæŁȘæŁ±æ€æŁ–æŁ·æŁ«æŁ€æŁ¶æ€“æ€æŁłæŁĄæ€‡æŁŒæ€ˆæ„°æąŽæ€‘æŁŻæŁ†æ€”æŁžæŁæŁœæŁŒæŁšæ€‹æ€Šæ€—æŁŽæŁˆæŁæŁžæŁŠæŁŽæŁ‘æ€†æŁ”æŁ©æ€•æ€„æŁ‡æŹčæŹ»æŹżæŹŒæź”æź—æź™æź•æźœæŻ°æŻČæŻłæ°°æ·Œæč†æč‡æžŸæč‰æșˆæžŒæžœæč…æčąæž«æžżæčæčæčłæžœæžłæč‹æč€æč‘æž»æžƒæžźæčž"], -["da40","æčšæčœæčĄæž±æžšæč æč±æč«æžčæžąæž°æč“æč„æž§æčžæč€æč·æč•æččæč’æčŠæž”æž¶æčšç„ ç„žç„Żçƒ»ç„źç„±ç„Łç„„焱ç„Č焟焹ç„șç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒąçŒ±çŒłçŒ§çŒČçŒ­çŒŠçŒŁçŒ”çŒŒçźçŹç°ç«ç–"], -["daa1","çšçĄç­ç±ç€çŁçç©ç çČç“»ç”Żç•Żç•Źç—§ç—šç—Ąç—Šç—ç—Ÿç—€ç——çš•çš’ç›šç†ç‡ç„çç…çŠçŽç‹çŒçŸžçŸŹçĄ çĄ€çĄ„çĄœçĄ­çĄ±çĄȘ祟祰祩祚神祹焎焳ç„Č焰皂皊皃皌的çȘ™ç«Šç«€ç­ŠçŹ»ç­„ç­ˆç­Œç­Žç­€ç­˜ç­…çČąçȞçČšçČĄç”˜ç”Żç”Łç”“ç”–ç”§ç”Șç”ç”­ç”œç”«ç”’ç””ç”©ç”‘ç”Ÿç”ŽçŒŸçŒżçœ„"], -["db40","çœŠçŸąçŸ çŸĄçż—è‘èèèƒŸèƒ”è…ƒè…Šè…’è…è…‡è„œè…è„șè‡Šè‡źè‡·è‡žè‡čèˆ„èˆŒèˆœèˆżè‰”èŒ»èèčèŁè€èšè’è§è€èŒè¶èè†èˆè«èŁèŽżèèè„è˜èżèĄè‹èŽè–è”è‰è‰èèžè‘è†è‚èł"], -["dba1","菕èș菇菑èȘè“èƒèŹèźè„è»è—èąè›è›èŸè›˜è›ąè›Šè›“è›Łè›šè›Șè›è›«è›œè›Źè›©è›—è›šè›‘èĄˆèĄ–èĄ•èąșèŁ—èąčèąžèŁ€èąŸèą¶èąŒèą·èąœèąČè€èŁ‰èŠ•èŠ˜èŠ—è§è§šè§›è©Žè©èšč詙詀詗詘詄詅詒詈詑詊詌詏豟èȁèȀèČșèČŸèȰèČčèČ”è¶„è¶€è¶‰è·˜è·“è·è·‡è·–è·œè·è·•è·™è·ˆè·—è·…è»Żè»·è»ș"], -["dc40","è»čè»Šè»źè»„è»”è»§è»šè»¶è»«è»±è»Źè»Žè»©é€­é€Žé€Żé„†é„Źé„„éƒżéƒŒé„ˆéƒčéƒ»é„é„€é„‡é„…é„ƒé…Ąé…€é…Ÿé…ąé… éˆéˆŠéˆ„éˆƒéˆšéˆŠéˆéˆŒéˆ€éˆ’é‡żé‡œéˆ†éˆ„éˆ§éˆ‚éˆœéˆ€éˆ™éˆ—éˆ…éˆ–é•»é–é–Œé–éš‡é™Ÿéšˆ"], -["dca1","éš‰éšƒéš€é›‚é›ˆé›ƒé›±é›°éŹé°éźé ‡éą©éŁ«éłŠé»čäșƒäș„äș¶ć‚œć‚żćƒ†ć‚źćƒ„ćƒŠć‚Žćƒˆćƒ‚ć‚°ćƒć‚șć‚±ćƒ‹ćƒ‰ć‚¶ć‚žć‡—ć‰șć‰žć‰»ć‰Œć—ƒć—›ć—Œć—ć—‹ć—Šć—ć—€ć—”ć—„ć—©ć–żć—’ć–ć—ć—•ć—ąć—–ć—ˆć—Čć—ć—™ć—‚ćœ”ćĄ“ćĄšćĄ€ćĄćĄćĄ‰ćĄŻćĄ•ćĄŽćĄćĄ™ćĄ„ćĄ›ć œćĄŁćĄ±ćŁŒć«‡ć«„ć«‹ćȘșćȘžćȘ±ćȘ”ćȘ°ćȘżć«ˆćȘ»ć«†"], -["dd40","ćȘ·ć«€ć«ŠćȘŽćȘ¶ć«ćȘčćȘćŻ–ćŻ˜ćŻ™ć°Ÿć°łć”±ć”Łć”Šć”„ć”Č攏攞攚攧改淰ćčćčŽćčŠćčćč‹ć»…ć»Œć»†ć»‹ć»‡ćœ€ćŸŻćŸ­æƒ·æ…‰æ…Šæ„«æ……æ„¶æ„Čæ„źæ…†æ„Żæ…æ„©æ…€æˆ é…šæˆŁæˆ„æˆ€æ…æ±æ«ææ’æ‰æ æ€"], -["dda1","æłæ‘ƒæŸæ•æ˜æčæ·æąæŁæŒæŠæ°æšæ‘æ”æŻæŠæšæ‘€æ„æ§æ‹æ§æ›æźæĄæŽæ•Żæ–’æ—“æš†æšŒæš•æšæš‹æšŠæš™æš”æ™žæœ æ„Šæ„Ÿæ€žæ„Žæ„ąæ„±æ€żæ„…æ„Șæ€čæ„‚æ„—æ„™æ„șæ„ˆæ„‰æ€”æ„Źæ€łæ€œæ„„æŁ°æ„žæ€Žæ„©æ„€æ„Żæ„„æ„¶æ„˜æ„æ„Žæ„Œæ€»æ„‹æ€·æ„œæ„æ„‘æ€Čæ„’æ€Żæ„»æ€Œæ­†æ­…æ­ƒæ­‚æ­ˆæ­æź›ïšæŻ»æŻŒ"], -["de40","æŻčæŻ·æŻžæș›æ»–滈æșæ»€æșŸæș“æș”æș æș±æșčæ»†æ»’æșœæ»æșžæ»‰æș·æș°æ»æșŠæ»æșČæșŸæ»ƒæ»œæ»˜æș™æș’æșŽæșæș€æșĄæșżæșłæ»æ»Šæș—æșźæșŁç…‡ç…”ç…’ç…Łç… ç…ç…ç…ąç…Č煾ç…Ș煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猌獂猻çŒșç€çŠç‰ç‘„ç‘Šç‘‹ç‘’ç‘‘ç‘—ç‘€ç‘ç‘ç‘Žç‘‚ç‘†ç‘ç‘”ç“Ąç“żç“Ÿç“œç”ç•čç•·æŠƒç—Żç˜ç˜ƒç—·ç—Ÿç—Œç—čç—žç˜ç—»ç—¶ç—­ç—”ç—œçš™çš”ç›ç•çŸç ç’ç–çšç©ç§ç”ç™ç­çŸ çą‡çąšçą”çąçą„çą•çą…çą†çąĄçąƒçĄčçą™çą€çą–çĄ»ç„ŒçŠ‚ç„œç„č繑繘繙繒繗繕繱繓"], -["df40","繛繐çȘŁçȘąçȘžç««ç­Šç­€ç­­ç­Žç­©ç­Č筄筳筱筰筥筞筶筣çČČçČŽçČŻç¶ˆç¶†ç¶€ç¶ç”żç¶…ç”șç¶Žç”»ç¶ƒç”Œç¶Œç¶”ç¶„ç”œç¶’çœ­çœ«çœ§çœšçœŹçŸŠçŸ„çŸ§çż›çżœè€Ąè…€è… è…·è…œè…©è…›è…ąè…ČæœĄè…žè…¶è…§è…Ż"], -["dfa1","è…„è…Ąèˆè‰‰è‰„è‰€è‰‚è‰…è“±èżè‘–è‘¶è‘čè’è’è‘„è‘‘è‘€è’†è‘§è°è‘è‘œè‘šè‘™è‘Žè‘łè‘è”‡è‘žè·èș萎è‘ș葃葞èČè‘…è©è™è‘‹èŻè‘‚è­è‘Ÿè‘°èčè‘Žè‘Œè‘’è‘Żè“…è’Žè»è‘‡è¶èłè‘šè‘Ÿè‘„è«è‘ è‘”è‘źè‘èœ‹èœ„è›·èœŒè›șè›–è›”èè›žèœŽèœ‰èœè›¶èœèœ…èŁ–èŁ‹èŁèŁŽèŁžèŁ›èŁšèŁŒèŁèŠ…èŠ›è§Ÿè§„è§€"], -["e040","è§Ąè§ è§ąè§œè§Šè©¶èȘ†è©żè©Ąèšżè©·èȘ‚èȘ„è©”èȘƒèȘè©Žè©ș谌豋豊豄豀豊èȆèȄèČ…èłŒè”šè”©è¶‘è¶Œè¶Žè¶è¶è¶“è¶”è¶è¶’è·°è· è·Źè·±è·źè·è·©è·Łè·ąè·§è·Čè·«è·ŽèŒ†è»żèŒèŒ€èŒ…èŒ‡èŒˆèŒ‚èŒ‹é’é€ż"], -["e0a1","é„é‰é€œé„é„é„é„‘é„–é„”é„‹é„Žé…źé…Żé‰ˆé‰’éˆ°éˆșé‰Šéˆłé‰„é‰žéŠƒéˆźé‰Šé‰†é‰­é‰Źé‰é‰ é‰§é‰Żéˆ¶é‰Ąé‰°éˆ±é‰”é‰Łé‰é‰Č鉎鉓鉌鉖éˆČ閟閜閞閛隒隓隑隗雎é›șé›œé›žé›”éłé·éžéČé é é ŽéąŹéŁ¶éŁč銯éŠČ銰銔éȘ­éȘ«é­›éłȘéł­éł§éș€é»œćƒŠćƒ”ćƒ—ćƒšćƒłćƒ›ćƒȘćƒćƒ€ćƒ“ćƒŹćƒ°ćƒŻćƒŁćƒ "], -["e140","ć‡˜ćŠ€ćŠć‹©ć‹«ćŒ°ćŽŹć˜§ć˜•ć˜Œć˜’ć—Œć˜ć˜œć˜ć˜“ć˜‚ć—ș昝昄旿ć—čćą‰ćĄŒćąćą˜ćą†ćąćĄżćĄŽćą‹ćĄșćą‡ćą‘ćąŽćĄ¶ćą‚ćąˆćĄ»ćą”ćąćŁŸć„«ć«œć«źć«„ć«•ć«Șć«šć«­ć««ć«łć«ąć« ć«›ć«Źć«žć«ć«™ć«šć«Ÿć­·ćŻ "], -["e1a1","ćŻŁć±Łć¶‚ć¶€ć”œć¶†ć”șć¶ć”·ć¶Šć¶‰ć¶ˆć”Ÿć”Œć¶ć”č政ćč˜ćč™ćč“ć»˜ć»‘ć»—ć»Žć»œć»•ć»™ć»’ć»”ćœ„ćœƒćœŻćŸ¶æ„Źæ„šæ…æ…žæ…±æ…łæ…’æ…“æ…Čæ…Źæ†€æ…Žæ…”æ…ș慛慄愻æ…Șæ…Ąæ…–æˆ©æˆ§æˆ«æ«æ‘æ‘›æ‘æ‘Žæ‘¶æ‘Čæ‘łæ‘œæ‘”æ‘Šæ’Šæ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘æ‘żæżæ‘Źæ‘«æ‘™æ‘„æ‘·æ•łæ– æšĄæš æšŸæœ…æœ„æœąæŠ±æŠ¶æ§‰"], -["e240","æŠ æ§ŽæŠ–æŠ°æŠŹæŠŒæŠ‘æŠ™æŠŽæŠ§æŠæŠ©æŠŸæŠŻæŠżæ§„æŠœæŠ€æ§”æŠčæ§ŠæŠšæ§æŠłæŠ“æŠȘæŠĄæŠžæ§™æŠ—æŠæ§‚æŠ”æŠ„æ§†æ­Šæ­æ­‹æźžæźŸæź æŻƒæŻ„æŻŸæ»Žæ»”æ»±æŒƒæŒ„æ»žæŒ·æ»»æŒźæŒ‰æœŽæŒ™æŒšæŒ§æŒ˜æŒ»æŒ’æ»­æŒŠ"], -["e2a1","æŒ¶æœłæ»čæ»źæŒ­æœ€æŒ°æŒŒæŒ”æ»«æŒ‡æŒŽæœƒæŒ…æ»œæ»¶æŒč挜滌æŒșæŒŸæŒæŒžæŒˆæŒĄç†‡ç†ç†‰ç†€ç†…ç†‚ç†ç…»ç††ç†ç†—ç‰„ç‰“çŠ—çŠ•çŠ“çƒçç‘çŒç‘ąç‘łç‘±ç‘”ç‘Čç‘§ç‘źç”€ç”‚ç”ƒç•œç–ç˜–ç˜ˆç˜Œç˜•ç˜‘ç˜Šç˜”çšžçžçŒçž…çž‚çźçž€çŻçŸçžƒçąČçąȘçąŽçą­çąšçĄŸçą«çąžçą„çą çąŹçąąçą€çŠ˜çŠŠçŠ‹çŠ–çŠ•çŠ”çŠ“"], -["e340","çŠ—çŠˆçŠ’çŠçš«ç©Šçš°çšŻçššçšŠçȘšçȘ«çȘŹç«źçźˆçźœçźŠçź‘çźçź–çźçźŒçź›çźŽçź…çź˜ćŠ„çź™çź€çź‚çČ»çČżçČŒçČșç¶§ç¶·ç·‚ç¶Łç¶Șç·ç·€ç·…ç¶ç·Žç·„ç·†ç·‹ç·Œç¶Żç¶čç¶–ç¶Œç¶Ÿç¶Šç¶źç¶©ç¶Ąç·‰çœłçżąçżŁçż„çżž"], -["e3a1","è€€èèœè†‰è††è†ƒè†‡è†è†Œè†‹èˆ•è’—è’€è’Ąè’Ÿè’șè“Žè“‚è’Źè’źè’«è’č蒎蓁蓍è’Șè’šè’±è“è’è’§è’»è’ąè’”è“‡è“Œè’›è’©è’Żè’šè“–è’˜è’¶è“è’ è“—è“”è“’è“›è’°è’‘è™ĄèœłèœŁèœšè«è€èœźèœžèœĄèœ™èœ›èƒèœŹèèœŸè†èœ èœČèœȘ蜭蜌蜒èœșèœ±èœ”è‚èœŠèœ§èœžèœ€èœšèœ°èœ‘èŁ·èŁ§èŁ±èŁČèŁșèŁŸèŁźèŁŒèŁ¶èŁ»"], -["e440","èŁ°èŁŹèŁ«èŠèŠĄèŠŸèŠžè§©è§«è§šèȘ«èȘ™èȘ‹èȘ’èȘèȘ–è°œè±šè±©èł•èłèł—è¶–èž‰èž‚è·żèžè·œèžŠèžƒèž‡èž†èž…è·Ÿèž€èž„èŒèŒ‘èŒŽèŒé„Łé„œé„ é„ąé„Ÿé„é„šé„€é„Ąé„›é…șé…Čé…č酳銄銀鉶銛é‰ș銠銔éŠȘ銍"], -["e4a1","銊銚銫é‰čéŠ—é‰żéŠŁé‹źéŠŽéŠ‚éŠ•éŠąé‰œéŠˆéŠĄéŠŠéŠ†éŠŒéŠ™éŠ§é‰ŸéŠ‡éŠ©éŠéŠ‹éˆ­éšžéšĄé›żé˜éœéșéŸéžƒéž€éž‚é»éž„éžéżéŸŽéŸé –éą­éąźé€‚é€€é€‡éŠéŠœé§ƒéŠč銻éŠș駂銜駇éȘ±é«Łé«§éŹŸéŹżé­ é­Ąé­Ÿéł±éłČéł”éș§ćƒżć„ƒć„°ćƒžć„†ć„‡ćƒ¶ćƒŸć„‹ć„Œćƒœć„ŠćŠ‹ćŠŒć‹±ć‹Żć™ˆć™‚ć™Œć˜”晁晊晉晆晘"], -["e540","ć™šć™€ć˜łć˜œć˜Źć˜Ÿć˜žć˜Șć˜șćœšćą«ćąćą±ćą ćąŁćąŻćąŹćą„ćąĄćŁżć«żć«Žć«œć«·ć«¶ćŹƒć«žćŹ‚ć«čćŹćŹ‡ćŹ…ćŹć±§ć¶™ć¶—ć¶Ÿć¶’ć¶ąć¶“ć¶•ć¶ ć¶œć¶Ąć¶šć¶žćč©ćčćč ćčœç·łć»›ć»žć»Ąćœ‰ćŸČ憋憃æ…迆±æ†°æ†ąæ†‰"], -["e5a1","æ†›æ†“æ†Żæ†­æ†Ÿæ†’æ†Șæ†Ąæ†æ…Šæ†łæˆ­æ‘źæ‘°æ’–æ’ æ’…æ’—æ’œæ’æ’‹æ’Šæ’Œæ’Łæ’Ÿæ‘šæ’±æ’˜æ•¶æ•șæ•č敻æ–Čæ–łæš”æš°æš©æšČ暷æšȘæšŻæš€æš†æš—æ§„æ§žæš•æ§±æ§€æš æ§żæ§Źæ§ąæš›æšæ§Ÿæš§æ§Čæ§źæš”æ§·æ§§æ©€æšˆæ§Šæ§»æšæ§Œæ§«æš‰æš„æš˜æš„æšæ§¶æšŠæš‡æ§Žæš–æ­‘æź„æźŁæźąæźŠæ°æ°€æŻżæ°‚æœæŒŠæœŸæŸ‡æż†æŸ’"], -["e640","æŸæŸ‰æŸŒæœąæœæŸ…æœšæŸ–æœ¶æœŹæŸ‚æœ•æœČæœ’æœæœ—æŸ”æŸ“æœæŒ€æœĄæœ«æœœæœ§æŸæœ“æŸ‹æœ©æœżæŸ•æœŁæœ·æœȘ朻ç†Čç†Żç†›ç†°ç† ç†šç†©ç†”ç†ç†„ç†žç†€ç†Ąç†Ș熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","çąç’‡ç’‰ç’Šç’†ç’ç‘œç’…ç’ˆç‘Œç‘čç”ˆç”‡ç•Ÿç˜„ç˜žç˜™ç˜ç˜œç˜Łç˜šç˜šç˜›çšœçšçšžçš›çžçžçž‰çžˆçŁçą»çŁçŁŒçŁ‘çŁŽçŁ”çŁˆçŁƒçŁ„çŁ‰çŠšçŠĄçŠ çŠœçŠąçŠ›æ­¶çščçȘČçȘŽçȘłçź·çŻ‹çźŸçźŹçŻŽçźŻçźčçŻŠçź”çł…çłˆçłŒçł‹ç··ç·›ç·Șç·§ç·—ç·Ąçžƒç·șç·Šç·¶ç·±ç·°ç·źç·Ÿçœ¶çŸŹçŸ°çŸ­çż­çż«çżȘçżŹçżŠçżšè€è§è†Łè†Ÿ"], -["e740","è†žè†•è†ąè†™è†—èˆ–è‰è‰“è‰’è‰è‰Žè‰‘è”€è”»è”è”€è”©è”Žè”‰è”è”Ÿè”Šè”§è”œè“»è”«è“ș蔈蔌蓎è”Șè“Čè”•è“·è“«è“łè“Œè”’è“Șè“©è”–è“Ÿè”šè”è”źè”‚è“œè”žè“¶è”±è”Šè“§è“šè“°è“Żè“čè”˜è” è”°è”‹è”™è”Żè™ą"], -["e7a1","è–èŁè€è·èŸĄèłè˜è”è›è’èĄèšè‘èžè­èȘèèŽèŸèèŻèŹèșèźèœè„èè»è”èąè§è©èĄšè€…è€Œè€”è€‹è€—è€˜è€™è€†è€–è€‘è€Žè€‰èŠąèŠ€èŠŁè§­è§°è§Źè«è«†èȘžè«“諑諔諕èȘ»è«—èȘŸè«€è«…諘諃èȘșèȘœè«™è°Ÿè±èČèł„èłŸèł™èłšèłšèłèł§è¶ è¶œè¶Ąè¶›èž èžŁèž„èž€èžźèž•èž›èž–èž‘èž™èžŠèž§"], -["e840","èž”èž’èž˜èž“èžœèž—èžšèŒŹèŒ€èŒ˜èŒšèŒ èŒŁèŒ–èŒ—éłé°éŻé§é«é„Żé„«é„©é„Șé„Čé„Šé„źé†…é††é†Šé†é†‚é†„é†€é‹é‹ƒé‹„é‹€é‹™éŠ¶é‹é‹±é‹Ÿé‹˜é‹©é‹—é‹é‹Œé‹Żé‹‚é‹šé‹Šé‹ˆé‹Žé‹Šé‹é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“"], -["e8a1","éŠ”é‹Ąé‹†éŠŽé•Œé–Źé–«é–źé–°éš€éšąé›“éœ…éœˆéœ‚éšéžŠéžŽéžˆéŸéŸé žé é Šé ©é šé  é ›é §éąČ逈éŁș逑途逖逗逕駜駍駏駓駔駎駉駖駘駋駗駌éȘłé«Źé««é«łé«Čé«±é­†é­ƒé­§é­Žé­±é­Šé­¶é­”é­°é­šé­€é­ŹéłŒéłșéłœéłżéł·éŽ‡éŽ€éłčéł»éŽˆéŽ…éŽ„éșƒé»“éŒéŒć„œć„“ć„—ć„šć„‘ć‡žćŒŽćĄć™°ć™ ć™ź"], -["e940","晳晩晣晭ć™Čć™žć™·ćœœćœ›ćŁˆćąœćŁ‰ćążćąșćŁ‚ćąŒćŁ†ćŹ—ćŹ™ćŹ›ćŹĄćŹ”ćŹ“ćŹćŹ–ćŹšćŹšćŹ ćŹžćŻŻć¶Źć¶±ć¶©ć¶§ć¶”ć¶°ć¶źć¶Șć¶šć¶Čć¶­ć¶Żć¶Žćč§ćčšćčŠćčŻć»©ć»§ć»Šć»šć»„ćœ‹ćŸŒæ†æ†šæ†–æ‡…æ†Žæ‡†æ‡æ‡Œæ†ș"], -["e9a1","æ†żæ†žæ†Œæ“—æ“–æ“æ“æ“‰æ’œæ’‰æ“ƒæ“›æ“łæ“™æ”łæ•żæ•Œæ–ąæ›ˆæšŸæ›€æ›Šæ›‹æ›æšœæš»æšșæ›ŒæœŁæšŽæ©Šæ©‰æ©§æšČæ©šæšŸæ©æ©­æ©¶æ©›æ©‘æššæ©šæš»æšżæ©æ©Șæ©€æ©æ©æ©”æ©Żæ©©æ© æšŒæ©žæ©–æ©•æ©æ©Žæ©†æ­•æ­”æ­–æź§æźȘæź«æŻˆæŻ‡æ°„æ°ƒæ°†æŸ­æż‹æŸŁæż‡æŸŒæżŽæżˆæœžæż„æŸœæŸžæżŠæŸšç€„æŸ„æŸźæŸșæŸŹæŸȘæżæŸżæŸž"], -["ea40","æŸąæż‰æŸ«æżæŸŻæŸČæŸ°ç‡…ç‡‚ç†żç†žç‡–ç‡€ç‡ç‡‹ç‡”ç‡Šç‡‡ç‡ç†œç‡˜ç†Œç‡†ç‡šç‡›çŠçŠžç©çŠç§çŹç„ç«çȘç‘żç’šç’ ç’”ç’’ç’•ç’Ąç”‹ç–€ç˜Żç˜­ç˜±ç˜œç˜łç˜Œç˜”ç˜Čç˜°çš»ç›ŠçžšçžçžĄçžœçž›çžąçžŁçž•çž™"], -["eaa1","çž—çŁçŁ©çŁ„çŁȘçŁžçŁŁçŁ›çŁĄçŁąçŁ­çŁŸçŁ çŠ€ç©„ç©ˆç©‡çȘ¶çȘžçȘ”çȘ±çȘ·çŻžçŻŁçŻ§çŻçŻ•çŻ„çŻšçŻšçŻč篔çŻȘçŻąçŻœçŻ«çŻ˜çŻŸçł’çł”çł—çłçł‘çž’çžĄçž—çžŒçžŸçž çž“çžŽçžœçž•çžšçžąçž‹çžçž–çžçž”çž„çž€çœƒçœ»çœŒçœșçŸ±çżŻè€Șè€©èŹè†±è†Šè†źè†čè†”è†«è†°è†Źè†Žè†Č膷膧è‡Čè‰•è‰–è‰—è•–è•…è•«è•è•“è•Ąè•˜"], -["eb40","è•€è•†è•€è•è•ąè•„è•‘è•‡è•Łè”Ÿè•›è•±è•Žè•źè•”è••è•§è• è–Œè•Šè•è•”è•„è•Źè™Łè™„è™€èž›èžèž—èž“èž’èžˆèžèž–èž˜èčèž‡èžŁèž…èžèž‘èžèž„èž”èžœèžšèž‰è€žè€Šè€°è€­è€źè€§è€±è€ąè€©è€Łè€Żè€Źè€Ÿè§±è« "], -["eba1","è«ąè«Čè«Žè«”è«èŹ”è«€è«Ÿè«°è«ˆè«žè«Ąè«šè«żè«Żè«»èȑèȒèČèł”èłźèł±èł°èłłè”Źè”źè¶„è¶§èžłèžŸèžžèč€èč…螶螌螜èčèž°èžżèșœèŒ¶èŒźèŒ”èŒČèŒč茷茎遶éč遻邆éƒșé„łé„”é„¶é†“é†é†‘é†é†éŒ§éŒžéŒˆéŒŸéŒ†éŒéșéŒžéŒŒéŒ›éŒŁéŒ’éŒé†éŒ­éŒŽéŒé‹‹éŒé‹ș錄錓é‹čé‹·éŒŽéŒ‚éŒ€é‹żéŒ©éŒč錔éŒȘ錔錌"], -["ec40","錋鋟錉錀鋻錖閌闍閟é–čé–șé–¶é–żé–”é–œéš©é›”éœ‹éœ’éœéž™éž—éž”éŸ°éŸžé ”é Żé Čé€€é€Ÿé€§é€©éŠžé§źé§Źé§„é§€é§°é§Łé§Șé§©é§§éȘčéȘżéȘŽéȘ»é«¶é«șé«čé«·éŹłéź€éź…éź‡é­Œé­Ÿé­»éź‚éź“éź’éźé­ș鼕"], -["eca1","é­œéźˆéŽ„éŽ—éŽ éŽžéŽ”éŽ©éŽéŽ˜éŽąéŽéŽ™éŽŸéșˆéș†éș‡éșźéș­é»•é»–é»șéŒ’éŒœć„Šć„„ć„ąć„€ć„ ć„©ć‹Žćš“ćšŒćšćš†ćš„ćšƒć™Ÿćš‚ć™żćšćŁ–ćŁ”ćŁćŁ’ćŹ­ćŹ„ćŹČ揣描揧揊揯揟死毱ćŻČć¶·ćčŹćčȘćŸŸćŸ»æ‡ƒæ†”æ†Œæ‡§æ‡ æ‡„æ‡€æ‡šæ‡žæ“Żæ“©æ“Łæ“«æ“€æ“šæ–æ–€æ–¶æ—šæ›’æȘæȘ–æȘæȘ„æȘ‰æȘŸæȘ›æȘĄæȘžæȘ‡æȘ“æȘŽ"], -["ed40","æȘ•æȘƒæȘšæȘ€æȘ‘æ©żæȘŠæȘšæȘ…æȘŒæȘ’æ­›æź­æ°‰æżŒæŸ©æżŽæż”æżŁæżœæż­æż§æżŠæżžæżČæżæżąæżšç‡Ąç‡±ç‡šç‡Čç‡€ç‡°ç‡ąçłçźçŻç’—ç’Č璫璐ç’Șç’­ç’±ç’„ç’Żç”ç”‘ç”’ç”ç–„ç™ƒç™ˆç™‰ç™‡çš€ç›©çž”çž«çžČ瞷瞶"], -["eda1","çžŽçž±çžšçŸ°çŁłçŁœç€‚çŁ»çŁŒçŁČ瀅çŁčçŁŸç€„çŠ«çŠšç©œç©›ç©–ç©˜ç©”ç©šçȘŸç«€ç«ç°…簏çŻČç°€çŻżçŻ»ç°ŽçŻŽç°‹çŻłç°‚ç°‰ç°ƒç°çŻžçŻœç°†çŻ°çŻ±ç°ç°Šçłšçž­çžŒçč‚çžłéĄˆçžžçžȘçč‰çč€çč‡çž©çčŒçž°çž»çž¶çč„çžșçœ…çœżçœŸçœœçżŽçżČè€Źè†»è‡„è‡Œè‡Šè‡…è‡‡è†Œè‡©è‰›è‰šè‰œè–ƒè–€è–è–§è–•è– è–‹è–Łè•»è–€è–šè–ž"], -["ee40","è•·è•Œè–‰è–Ąè•șè•žè•—è–Žè––è–†è–è–™è–è–è–ąè–‚è–ˆè–…è•č蕶薘薐薟虚螟èžȘèž­èŸ…èž°èžŹèžčèž”èžŒèžźèŸ‰èŸƒèŸ‚èŸŒèž·èžŻèŸ„èŸŠèžŽèž¶èžżèžžèžœèŸžèžČè€”è€łè€Œè€Ÿè„è„’è€·è„‚èŠ­èŠŻèŠźè§Čè§łèŹž"], -["eea1","èŹ˜èŹ–èŹ‘èŹ…èŹ‹èŹąèŹèŹ’èŹ•èŹ‡èŹèŹˆèŹ†èŹœèŹ“èŹšè±è±°è±Čè±±è±ŻèȕèȔèłčè”ŻèčŽèčèč“èčèčŒèč‡èœƒèœ€é‚…éŸé„žé†šé†ąé†›é†™é†Ÿé†Ąé†é† éŽĄéŽƒéŽŻé€é–é‡éŒé˜éœé¶é‰éé‘é é­éŽéŒéȘéčé—é•é’éé±é·é»éĄéžéŁé§éŽ€éŽé™é—‡é—€é—‰é—ƒé—…é–·éšźéš°éšŹéœ éœŸéœ˜éœéœ™éžšéžĄéžœ"], -["ef40","éžžéžéŸ•éŸ”éŸ±éĄéĄ„éĄŠéĄ‰éĄ…éĄƒé€„é€«é€Źé€Ș逳é€Čé€Żé€­é€±é€°éŠ˜éŠŁéŠĄéš‚é§șé§Žé§·é§č駞駶駻駜駟駌隃éȘŸé«Ÿé«œéŹé«Œé­ˆéźšéźšéźžéź›éźŠéźĄéź„éź€éź†éźąéź éźŻéŽłé”é”§éŽ¶éŽźéŽŻéŽ±éŽžéŽ°"], -["efa1","é”…é”‚é”ƒéŽŸéŽ·é”€éŽœçż”éŽ­éșŠéș‰éșéș°é»ˆé»šé»»é»żéŒ€éŒŁéŒąéœ”éŸ ć„±ć„­ć„źćš˜ćšœćš—ćššćšćš™ć„°ćŹŒć±©ć±Șć·€ćč­ćčźæ‡˜æ‡Ÿæ‡­æ‡źæ‡±æ‡Șæ‡°æ‡«æ‡–æ‡©æ“żæ”„æ“œæ“žæ”æ”ƒæ“Œæ–”æ—›æ›šæ››æ›˜æ«…æȘčæȘœæ«Ąæ«†æȘșæȘ¶æȘ·æ«‡æȘŽæȘ­æ­žæŻ‰æ°‹ç€‡ç€Œç€ç€ç€…ç€”ç€Žæżżç€€æż»ç€ŠæżŒæż·ç€Šçˆç‡żç‡č爃燜獶"], -["f040","ç’žç“€ç’”ç“ç’Ÿç’¶ç’»ç“‚ç””ç”“ç™œç™€ç™™ç™ç™“ç™—ç™šçšŠçšœç›ŹçŸ‚çžșçŁżç€Œç€“ç€”ç€‰ç€ç€’ç€‘çŠ­çŠŹç©Ÿç°œç°©ç°™ç° ç°Ÿç°­ç°ç°Šç°šç°ąç°„ç°°çčœçčçč–çčŁçč˜çčąçčŸçč‘çč çč—çč“çŸ”çŸłçż·çżžè”è‡‘è‡’"], -["f0a1","è‡è‰Ÿè‰žè–Žè—†è—€è—ƒè—‚è–łè–”è–œè—‡è—„è–żè—‹è—Žè—ˆè—…è–±è–¶è—’è˜€è–žè–·è–Ÿè™©èŸ§èŸŠèŸąèŸ›èŸ«èŸȘèŸ„èŸŸèŸłèŸ€èŸ”èŸœèŸ“èŸ­èŸ˜èŸŁèž€èŸ—èŸ™è èŸŽèŸšèŸè„“è„‹è„è„Œè„†è„è„‘è„‰èŹȘèŹ§èŹŁèŹłèŹ°èŹ”è­‡èŹŻèŹŒèŹŸèŹ±èŹ„èŹ·èŹŠèŹ¶èŹźèŹ€èŹ»èŹœèŹș豂豔èșèȘèČ—èłŸèŽ„èŽ‚èŽ€èčœèčąèč èč—èč–èčžèč„èč§"], -["f140","èč›èčšèčĄèčèč©èč”蜆蜇蜈蜋鄚é„șé„»é„Ÿé†šé†„é†§é†Żé†Ș鎔鎌鎒鎷鎛鎝鎉鎧鎎éŽȘ鎞鎊鎕鎈鎙鎟鎍鎱鎑éŽČéŽ€éŽšéŽŽéŽŁéŽ„é—’é—“é—‘éšłé›—é›šć·‚é›Ÿé›˜é›éœŁéœąéœ„éžŹéžźéžšéž«éž€éžȘ"], -["f1a1","éžąéž„éŸ—éŸ™éŸ–éŸ˜éŸșéĄéĄ‘éĄ’éąžé„é€Œé€șéšéš‹éš‰éšéš„éš‘éšŠéš…éš‡éš†é«€é«œéŹˆéŹ„éŹ…éŹ©éŹ”é­Šé­Œé­‹éŻ‡éŻ†éŻƒéźżéŻéź”éźžéŻ“éź¶éŻ„éźčéźœé”œé”“é”é”Šé”›é”‹é”™é”–é”Œé”—é”’é””é”Ÿé”˜é”šéșŽéșŒé»ŸéŒéŒ€éŒ–錄錫éŒȘéŒ©éŒšéœŒéœ•ć„Žć„”ćŠ–ć‹·ćŽŽćš«ćš­ćšŠćš§ćšȘćšŹćŁšćŁćŁ›ć€’ćŹœćŹŸćŹżć·ƒćč°"], -["f240","ćŸżæ‡»æ”‡æ”æ”æ”‰æ”Œæ”Žæ–„æ—žæ—æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«æ««æ«æ«æ«žæ­ æź°æ°Œç€™ç€§ç€ ç€–ç€«ç€Ąç€ąç€Łç€©ç€—ç€€ç€œç€ȘçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ„çŠŠçŠ€çŠŁçŠĄç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç€ç€›"], -["f2a1","ç€Ąç€œç€—ç€žçŠ°ç©§ç©šç°łç°Œç°č簏簻糏çłȘçč¶çč”çčžçč°çč·çčŻçčșçčČçčŽçčšçœ‹çœŠçŸƒçŸ†çŸ·çżœçżŸèžè‡—è‡•è‰€è‰Ąè‰Łè—«è—±è—­è—™è—Ąè—šè—šè——è—Źè—Čè—žè—˜è—Ÿè—Łè—œè—‘è—°è—Šè—Żè—žè—ąè €èŸșè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸŒè ˆèŸżè Šè ‚è„ąè„šè„›è„—è„Ąè„œè„˜è„è„™èŠˆèŠ·èŠ¶è§¶è­è­ˆè­Šè­€è­“è­–è­”è­‹è­•"], -["f340","譑譂譒譗豃豷豶èČšèŽ†èŽ‡èŽ‰è¶Źè¶Șè¶­è¶«èč­èčžèčłèčȘèčŻèč»è»‚èœ’èœ‘èœèœèœ“èŸŽé…€é„żé†°é†­éžé‡éé‚éšééčéŹéŒé™éŽ©éŠéŠé”éźéŁé•é„éŽé€é’é§é•œé—šé—›é›Ąéœ©éœ«éœŹéœšéœŠ"], -["f3a1","éžłéž·éž¶éŸéŸžéŸŸéĄœéĄ™éĄéĄ—éążéąœéą»éąŸé„ˆé„‡é„ƒéŠŠéŠ§éššéš•éš„éšéš€éš›éšąéš éš§éšŁéšžéšœéš”é«‚éŹ‹éŹŠéŹŽéŹŒéŹ·éŻȘéŻ«éŻ éŻžéŻ€éŻŠéŻąéŻ°éŻ”éŻ—éŻŹéŻœéŻ™éŻ„éŻ•éŻĄéŻšé”·é¶é¶Šé¶„é¶ˆé”±é¶€é”žé¶†é¶‹é¶Œé”œé”«é”Žé””é”°é”©é¶…é”łé”»é¶‚é”Żé”č锿鶇锚éș”éș‘é»€é»ŒéŒ­éœ€éœéœéœ–éœ—éœ˜ćŒ·ćšČ"], -["f440","暔暳棣歅淆淇滟滯激濁æ‡čæ”—æ”–æ”•æ”“æ—Ÿæ›šæ›Łæ›€æ«łæ«°æ«Ș櫚æ«čæ«±æ«źæ«Żç€Œç€”ç€Żç€·ç€Žç€±ç‚ç€žç€żç€șç€čç€ç€»ç€łççˆ“çˆ”çŠšçœçŒç’ș皫çšȘ皟盭矌矎矏矍çŸČ瀄瀣瀧瀚瀀瀩"], -["f4a1","çŠČç©źç©Źç©­ç«·ç±‰ç±ˆç±Šç±‡ç±…çłźçč»çčŸçșçș€çŸșçżżèčè‡›è‡™èˆ‹è‰šè‰©è˜ąè—żè˜è—Ÿè˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—œè ™è è ‘è —è “è –è„Łè„ŠèŠčè§·è­ è­Șè­è­šè­Łè­„è­§è­­è¶źèș†èșˆèș„蜙蜖蜗蜕蜘蜚邍酃酁醷醔é†Čé†łé‹é“é»é éé”éŸé•ééšé™éé”é€é·é‡éŽé–é’éș鐉鏾鐊鏿"], -["f540","éŒéŒé¶é‘é†é—žé— é—ŸéœźéœŻéžčéž»éŸœéŸŸéĄ éĄąéĄŁéĄŸéŁéŁ‚é„é„Žé„™é„Œé„‹é„“éšČ階隱随éšȘéš¶éš©éšźéšžéš­é«‡é«Šé«†éŹéŹ’éŹ‘é°‹é°ˆéŻ·é°…é°’éŻžé±€é°‡é°Žé°†é°—é°”é°‰é¶Ÿé¶™é¶€é¶é¶’é¶˜é¶é¶›"], -["f5a1","鶠鶔鶜é¶Șé¶—é¶Ąé¶šé¶ąé¶šé¶žé¶Łé¶żé¶©é¶–é¶Šé¶§éș™éș›éșšé»„é»€é»§é»ŠéŒ°éŒźéœ›éœ éœžéœéœ™éŸ‘ć„șć„čćŠ˜ćŠ—ć›ƒćšœćšŸć­ˆć­‡ć·‹ć·ć»±æ‡œæ”›æŹ‚æ«ŒæŹƒæ«žæŹ€çƒç„çŠçˆç‰ç…ç†çˆçˆšçˆ™çŸç”—ç™ȘçŸç€­ç€±ç€Żç±”ç±“çłČçșŠçș‡çșˆçș‹çș†çșçœçŸ»è€°è‡è˜˜è˜Șè˜Šè˜Ÿè˜Łè˜œè˜™è˜§è˜źè˜Ąè˜ è˜©è˜žè˜„"], -["f640","è ©è è ›è  è €è œè «èĄŠè„­è„©è„źè„«è§șè­čè­žè­…è­șè­»èŽèŽ”è¶ŻèșŽèșŒèœžèœ›èœé…†é…„é……é†čéżé»é¶é©éœéŒé°éčéȘé·éŹé‘€é±é—„é—€é—Łéœ”éœșéžżéŸĄéĄ€éŁ‰éŁ†éŁ€é„˜é„–éšč障驆驄驂驁éšș"], -["f6a1","éšżé«éŹ•éŹ—éŹ˜éŹ–éŹșé­’é°«é°é°œé°Źé°Łé°šé°©é°€é°Ąé¶·é¶¶é¶Œé·é·‡é·Šé·é¶Ÿé·…é·ƒé¶»é¶”é·Žé¶čé¶șé¶Źé·ˆé¶±é¶­é·Œé¶łé·é¶Čéčșéșœé»«é»źé»­éŒ›éŒ˜éŒšéŒ±éœŽéœ„需韒äșčć›†ć›…ć›‹ć„±ć­‹ć­Œć·•ć·‘ć»Čæ”Ąæ” æ”Šæ”ąæŹ‹æŹˆæŹ‰æ°ç•ç–ç—ç’çˆžçˆŸçŠ©çżç“˜ç“•ç“™ç“—ç™­çš­ç€”çŠŽç©°ç©±ç±—ç±œç±™ç±›ç±š"], -["f740","糎糱çș‘çœçŸ‡è‡žè‰«è˜Žè˜”è˜łè˜Źè˜Čè˜¶è Źè šè Šè Șè „è„±èŠżèŠŸè§»è­Ÿèź„èź‚èź†èź…è­żèŽ•èș•èș”èșšèș’èșèș–èș—èœ èœąé…‡é‘Œé‘é‘Šé‘‹é‘é‘‡é‘…é‘ˆé‘‰é‘†éœżéŸŁéĄȘéĄ©éŁ‹é„”é„›é©Žé©“é©”é©Œé©é©ˆé©Š"], -["f7a1","é©‰é©’é©é«éŹ™éŹ«éŹ»é­–é­•é±†é±ˆé°żé±„é°čé°łé±é°Œé°·é°Žé°Č鰜鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷔鷕鷝éș¶é»°éŒ”éŒłéŒČéœ‚éœ«éŸ•éŸąć„œćŠ™ćŁšćŁ§ć„Čć­ć·˜è Żćœæˆæˆƒæˆ„æ”©æ”„æ––æ›«æŹ‘æŹ’æŹæŻŠç›çšçˆąçŽ‚çŽçŽƒç™°çŸ”ç±§ç±Šçș•è‰Źè˜ș虀è˜č蘌蘱蘻蘟蠰è Čè źè łè„¶è„Žè„łè§Ÿ"], -["f840","èźŒèźŽèź‹èźˆè±…èŽ™èș˜èœ€èœŁé†Œé‘ąé‘•é‘é‘—é‘žéŸ„éŸ…é €é©–é©™éŹžéŹŸéŹ é±’é±˜é±é±Šé±é±‹é±•é±™é±Œé±Žé·»é··é·Żé·Łé·«é·žé·€é·¶é·Ąé·źé·Šé·Č鷰鷹鷏鷎鷳鷚鷭黂黐é»Čé»łéŒ†éŒœéŒžéŒ·éŒ¶éœƒéœ"], -["f8a1","éœ±éœ°éœźéœŻć›“ć›ć­Žć±­æ”­æ›­æ›źæŹ“çŸçĄçç çˆŁç“›ç“„çŸ•ç€žçŠ·çŠ¶ç±Șçș—çŸ‰è‰­è™ƒè žè ·è ”èĄ‹èź”èź•èșžèșŸèș èșé†Ÿé†œé‡‚é‘«é‘šé‘©é›„é†éƒé‡éŸ‡éŸ„é©žé«•é­™é±Łé±§é±Šé±ąé±žé± éž‚é·Ÿéž‡éžƒéž†éž…éž€éžéž‰é·żé·œéž„éș éŒžéœ†éœŽéœ”éœ¶ć›”æ”źæ–žæŹ˜æŹ™æŹ—æŹšçąçˆŠçŠȘ矘矙ç€č籩籫糶çșš"], -["f940","çș˜çș›çș™è‡ è‡Ąè™†è™‡è™ˆè„čè„șè„Œè„»è§żèź˜èź™èș„èș€èșŁé‘źé‘­é‘Żé‘±é‘łé‰éĄČé„Ÿé±šé±źé±­éž‹éžéžéžéž’éž‘éșĄé»”錉震霞霻éœșéœčćœžçŠç±Żè Œè¶ČèșŠé‡ƒé‘Žé‘žé‘¶é‘”é© é±Žé±łé±±é±”éž”éž“é»¶éŒŠ"], -["f9a1","éŸ€çšç„çł·è™Șè Ÿè œè żèźžèȜèș©è»‰é‹éĄłéĄŽéŁŒé„ĄéŠ«é©€é©Šé©§éŹ€éž•éž—éœˆæˆ‡æŹžçˆ§è™Œèșšé’‚é’€é’é©©é©šéŹźéž™çˆ©è™‹èźŸé’ƒé±čéș·ç™”é©«é±ș鞝灩çȘéș€éœŸéœ‰éŸ˜çąéŠčèŁćą»æ’çȧć«șâ•”â•Šâ•—â• â•Źâ•Łâ•šâ•©â•â•’â•€â••â•žâ•Șâ•Ąâ•˜â•§â•›â•“â•„â•–â•Ÿâ•«â•ąâ•™â•šâ•œâ•‘â•â•­â•źâ•°â•Żâ–“"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/eucjp.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/eucjp.json deleted file mode 100644 index 4fa61ca..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/eucjp.json +++ /dev/null @@ -1,182 +0,0 @@ -[ -["0","\u0000",127], -["8ea1","ïœĄ",62], -["a1a1","ă€€ă€ă€‚ïŒŒïŒŽăƒ»ïŒšïŒ›ïŒŸïŒă‚›ă‚œÂŽïœ€ÂšïŒŸïżŁïŒżăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒâ€•â€ïŒïŒŒïœžâˆ„ïœœâ€Šâ€„â€˜â€™â€œâ€ïŒˆïŒ‰ă€”ă€•ïŒ»ïŒœïœ›ïœă€ˆ",9,"ïŒ‹ïŒÂ±Ă—Ă·ïŒâ‰ ïŒœïŒžâ‰Šâ‰§âˆžâˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïż„ïŒ„ïż ïżĄïŒ…ïŒƒïŒ†ïŒŠïŒ Â§â˜†â˜…â—‹â—â—Žâ—‡"], -["a2a1","◆□■△â–Čâ–œâ–Œâ€»ă€’â†’â†â†‘â†“ă€“"], -["a2ba","∈∋⊆⊇⊂⊃âˆȘ∩"], -["a2ca","âˆ§âˆšïżąâ‡’â‡”âˆ€âˆƒ"], -["a2dc","âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹ"], -["a2f2","ʼn♯♭â™Ș†‥¶"], -["a2fe","◯"], -["a3b0","",9], -["a3c1","ïŒĄ",25], -["a3e1","",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"ÎŁ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","â”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚"], -["ada1","①",19,"Ⅰ",9], -["adc0","ă‰ăŒ”ăŒąăăŒ˜ăŒ§ăŒƒăŒ¶ă‘ă—ăŒăŒŠăŒŁăŒ«ăŠăŒ»ăŽœăŽăŽžăŽŽăŽă„ăŽĄ"], -["addf","ă»ă€ă€Ÿâ„–ăâ„ĄăŠ€",4,"㈱ăˆČăˆčăŸăœăŒâ‰’â‰Ąâˆ«âˆźâˆ‘âˆšâŠ„âˆ âˆŸâŠżâˆ”âˆ©âˆȘ"], -["b0a1","äșœć”–ćšƒé˜żć“€æ„›æŒšć§¶é€ąè‘”茜穐æ‚ȘæĄæž„æ—­è‘ŠèŠŠéŻ”æą“ćœ§æ–Ąæ‰±ćź›ć§è™»éŁŽç”ąç¶ŸéźŽæˆ–çČŸèą·ćź‰ćș”æŒ‰æš—æĄˆé—‡éžæä»„äŒŠäœäŸć‰ć›Čć€·ć§”ćšć°‰æƒŸæ„æ…°æ˜“æ€…ç‚șç•ç•°ç§»ç¶­ç·ŻèƒƒèŽèĄŁèŹ‚é•éș㌻äș•äș„㟟è‚ČéƒçŁŻäž€ćŁ±æșąé€žçšČèŒšèŠ‹é°Żć…ć°ć’œć“Ąć› ć§»ćŒ•éŁČ淫胀蔭"], -["b1a1","é™ąé™°éš éŸ»ć‹ćłćź‡çƒçŸœèż‚é›šćŻé”œçȘșäž‘çą“è‡ŒæžŠć˜˜ć”„æŹè”šé°»ć§„ćŽ©æ”Šç“œé–ć™‚äș‘運é›Čèé€ŒćĄć–¶ćŹ°ćœ±æ˜ æ›łæ „æ°žæłłæŽ©ç‘›ç›ˆç©Žé Žè‹±èĄ›è© é‹­æ¶Čç–«ç›Šé§…æ‚ŠèŹè¶Šé–ČæŠŽćŽ­ć††ćœ’ć °ć„„ćźŽć»¶æ€šæŽ©æŽæČżæŒ”ç‚Žç„”ç…™ç‡•çŒżçžè‰¶è‹‘è–—é é‰›éŽ›ćĄ©æ–Œæ±šç”„ć‡čć€źć„„ćŸ€ćżœ"], -["b2a1","抌æ—șæšȘæŹ§æźŽçŽ‹çżè„–éŽŹéŽŽé»„ćČĄæČ–è»ć„„ć±‹æ†¶è‡†æĄ¶ç‰Ąäč™äżșćžæ©æž©ç©éŸłäž‹ćŒ–ä»źäœ•äŒœäŸĄäœłćŠ ćŻć˜‰ć€ć«ćź¶ćŻĄç§‘æš‡æžœæž¶æ­ŒæČłç«ç‚çŠçŠŸçšŒçź‡èŠ±è‹›èŒ„è·èŻè“èŠèȘČ昩èČšèżŠéŽéœžèšŠäż„ćłšæˆ‘ç‰™ç”»è‡„èŠœè›Ÿèł€é›…é€“é§•ä»‹äŒšè§Łć›žćĄŠćŁŠć»»ćż«æ€Șæ‚”æąæ‡æˆ’æ‹æ”č"], -["b3a1","é­æ™Šæą°æ”·ç°ç•Œçš†ç””èŠ„èŸč開階èČć‡±ćŠŸć€–ć’łćźłćŽ–æ…šæŠ‚æ¶Żçąè“‹èĄ—è©Č鎧éȘžæ”ŹéŠšè›™ćžŁæŸżè›ŽéˆŽćŠƒćš‡ć„ć»“æ‹Ąæ’čæ Œæ žæź»çČçąșç©«èŠšè§’è”«èŒƒéƒ­é–Łéš”é©ć­ŠćČłæ„œéĄéĄŽæŽ›çŹ æš«æ©żæą¶é°æœŸć‰Čć–æ°æ‹ŹæŽ»æž‡æ»‘è‘›è€èœ„äž”é°čć¶æ€›æšș鞄æ Șć…œç«ƒè’Čé‡œéŽŒć™›éŽšæ ąèŒ…è±"], -["b4a1","çČ„ćˆˆè‹…ç“ŠäčŸäŸƒć† ćŻ’ćˆŠć‹˜ć‹§ć·»ć–šć Ș槩漌漘毛ćčČćč迂ٿ„Ÿæ…Łæ†Ÿæ›æ•ąæŸ‘æĄ“æŁșæŹŸæ­“æ±—æŒąæŸ—æœ…ç’°ç”˜ç›Łçœ‹ç«żçźĄç°Ąç·©çŒ¶çż°è‚è‰ŠèŽžèŠłè«ŒèČ«é‚„é‘‘é–“é–‘é–ąé™„éŸ“é€šèˆ˜äžžć«ćČžć·ŒçŽ©ç™ŒçœŒćČ©çż«èŽ‹é›é ‘éĄ”éĄ˜äŒäŒŽć±ć–œć™šćŸș愇揉毄ćȐ澌ćčŸćżŒæźæœșæ——æ—ąæœŸæŁ‹æŁ„"], -["b5a1","æ©Ÿćž°æŻ…æ°—æ±œç•żç„ˆć­Łçš€çŽ€ćŸœèŠèš˜èČŽè”·è»ŒèŒéŁąéšŽéŹŒäș€ćœć„€ćŠ“ćźœæˆŻæŠ€æ“ŹæŹș犠疑焇矩蟻èȘŒè­°æŽŹèŠéž ć‰ćƒć–«æĄ”æ©˜è©°ç §æ”é»ćŽćźąè„šè™é€†äž˜äč…ä»‡äŒ‘ćŠćžćźźćŒ“æ€„救朜求æ±ČæłŁçžçƒç©¶çȘźçŹˆçŽšçłŸç”Šæ—§ç‰›ćŽ»ć±…ć·šæ‹’æ‹ æŒ™æž è™šèš±è·é‹žæŒçŠŠé­šäșšäș«äșŹ"], -["b6a1","äŸ›äŸ ćƒ‘ć…‡ç«¶ć…±ć‡¶ć”ćŒĄćżć«ć–ŹćąƒćłĄćŒ·ćœŠæ€Żææ­æŒŸæ•™æ©‹æłç‹‚ç‹­çŸŻèƒžè„…èˆˆè•Žéƒ·éĄéŸżé„—é©šä»°ć‡ć°­æšæ„­ć±€æ›Čæ„”çŽ‰æĄçČćƒ…ć‹€ć‡ć·ŸéŒŠæ–€æŹŁæŹœçŽçŠçŠœç­‹ç·ŠèŠčèŒèĄżè„ŸèŹčèż‘é‡‘ćŸéŠ€äčć€¶ć„ćŒș狗玖矩苊èșŻé§†é§ˆé§’ć…·æ„šè™žć–°ç©ș恶毓遇隅äžČæ«›é‡§ć±‘ć±ˆ"], -["b7a1","掘çȘŸæČ“éŽèœĄçȘȘ熊隈çČ‚æ —çč°æĄ‘鍬ć‹Čć›è–«èš“çŸ€è»éƒĄćŠèąˆç„äż‚ć‚Ÿćˆ‘ć…„ć•“ćœ­çȘćž‹ć„‘ćœąćŸ„æ”æ…¶æ…§æ†©æŽČæșæ•Źæ™ŻæĄ‚æž“ç•Šçšœçł»ç”Œç¶™çč‹çœ«èŒŽèŠè›èšˆè©Łè­Šè»œé šé¶èŠžèżŽéŻšćŠ‡æˆŸæ’ƒæż€éš™æĄć‚‘æŹ æ±șæœ”ç©Žç”èĄ€èšŁæœˆä»¶ć€čć€Šć„ć…Œćˆžć‰Łć–§ćœć …ć«Œć»șæ†Čæ‡žæ‹łæČ"], -["b8a1","æ€œæš©ç‰œçŠŹçŒźç ”çĄŻç”čçœŒè‚©èŠ‹èŹ™èłąè»’éŁé”é™ș顕鹓éčžć…ƒćŽŸćŽłćč»ćŒŠæž›æșçŽ„çŸç”ƒèˆ·èš€è«ș限äčŽć€‹ć€ć‘Œć›ș槑歀深ćș«ćŒ§æˆžæ•…æžŻæč–ç‹çłŠèąŽè‚ĄèƒĄè°è™ŽèȘ‡è·šéˆ·é›‡éĄ§éŒ“äș”äș’äŒćˆć‘‰ćŸćšŻćŸŒćŸĄæ‚Ÿæą§æȘŽç‘šçąèȘžèȘ€è­·é†äčžé݉äș€äœŒäŸŻć€™ć€–ć…‰ć…ŹćŠŸćŠčć‹ŸćŽšćŁć‘"], -["b9a1","ćŽć–‰ć‘ćžąć„œć­”ć­ćźć·„ć·§ć··ćčžćșƒćșšćș·ćŒ˜æ’æ…ŒæŠ—æ‹˜æŽ§æ”»æ˜‚æ™ƒæ›Žæ­æ Ąæą—æ§‹æ±ŸæŽȘæ”©æžŻæșç”Čçš‡çĄŹçšżçł çŽ…çŽ˜ç”žç¶±è€•è€ƒè‚Żè‚±è…”è†èˆȘè’èĄŒèĄĄèŹ›èČąèłŒéƒŠé…”é‰±ç żé‹Œé–€é™é …éŠ™é«˜éŽ»ć‰›ćŠ«ć·ćˆćŁ•æ‹·æż è±Ș蜟éșčć…‹ćˆ»ć‘Šć›œç©€é…·é” é»’ç„æŒ‰è…°ç”‘ćżœæƒšéȘšç‹›èŸŒ"], -["baa1","æ­€é ƒä»Šć›°ć€ćąŸć©šæšæ‡‡æ˜æ˜†æ čæą±æ··ç—•çŽșè‰źé­‚äș›äœć‰ć”†ć”Żć·Šć·źæŸ»æČ™ç‘łç ‚è©éŽ–èŁŸććș§æŒ«ć‚”ć‚Źć†æœ€ć“‰ćĄžćŠ»ćź°ćœ©æ‰æŽĄæ œæ­łæžˆçœé‡‡çŠ€ç •ç Šç„­æ–ŽçŽ°èœèŁèŒ‰éš›ć‰€ćœšæçœȘèȡ憮杂é˜Șć ș把肎ć’ČćŽŽćŸŒçą•é·șäœœć‰Šć’‹æŸæ˜šæœ”æŸ”çȘ„ç­–çŽąéŒŻæĄœéź­çŹčćŒ™ć†Šćˆ·"], -["bba1","ćŻŸæ‹¶æ’źæ“Šæœ­æźșè–©é›‘çšéŻ–æŒéŒ†éź«çšżæ™’äž‰ć‚˜ć‚ć±±æƒšæ’’æ•ŁæĄŸç‡ŠçŠç”Łçź—çș‚èš•èźƒèł›é…žé€æ–Źæš«æź‹ä»•ä»”äŒșäœżćˆș揾ćČć—Łć››ćŁ«ć§‹ć§‰ć§żć­ć±ćž‚ćž«ćż—æ€æŒ‡æ”Żć­œæ–Żæ–œæ—šæžæ­ąæ­»æ°ç…ç„‰ç§çłžçŽ™çŽ«è‚ąè„‚è‡łèŠ–è©žè©©è©ŠèȘŒè«źèł‡èłœé›ŒéŁŒæ­Żäș‹äŒŒäŸć…ć­—ćŻș慈持時"], -["bca1","æŹĄæ»‹æČ»çˆŸç’œç—”çفç€șè€Œè€łè‡Ș蒔蟞汐éčżćŒè­˜éŽ«ç«șè»žćźé›«äžƒć±ćŸ·ć€±ć«‰ćź€æ‚‰æčżæŒ†ç–ŸèłȘćźŸè”€çŻ ćČæŸŽèŠć±Ąè•ŠçžžèˆŽć†™ć°„æšè”Šæ–œç…źç€ŸçŽ—è€…èŹè»Šéźè›‡é‚Ș怟ć‹șć°șæ“çŒçˆ”é…Œé‡ˆéŒ«è‹„ćŻ‚ćŒ±æƒčäž»ć–ćźˆæ‰‹æœ±æźŠç‹©ç çšźè…«è¶Łé…’éŠ–ć„’ć—ć‘ȘćŻżæŽˆæščç¶Źéœ€ć›šćŽć‘š"], -["bda1","ćź—ć°±ć·žäżźæ„æ‹ŸæŽČ秀秋甂çčçż’è‡­èˆŸè’èĄ†è„ČèźèčŽèŒŻé€±é…‹é…Źé›†é†œä»€äœć……ććŸ“æˆŽæŸ”æ±æž‹çŁçžŠé‡éŠƒć”ć€™ćźżæ·‘ç„çžźçČ›ćĄŸç†Ÿć‡șèĄ“èż°äżŠćł»æ˜„çžŹç«Łèˆœé§żć‡†ćŸȘæ—Źæ„Żæź‰æ·łæș–æœ€ç›ŸçŽ”ć·Ąé”é†‡é †ć‡Šćˆæ‰€æš‘æ›™æžšćș¶ç·’çœČæ›žè–Żè—·è«žćŠ©ć™ć„łćșćŸæ•é‹€é™€ć‚·ć„Ÿ"], -["bea1","ć‹ćŒ ć‡ćŹć“šć•†ć”±ć˜—ć„šćŠŸćšŒćź”ć°†ć°ć°‘ć°šćș„ćșŠć» ćœ°æ‰żæŠ„æ‹›æŽŒæ·æ˜‡æ˜Œæ˜­æ™¶æŸæąąæšŸæš”æČŒæ¶ˆæž‰æč˜ç„Œç„Šç…§ç—‡çœçĄç€ç„„称章珑çȧçŽčè‚–è–è’‹è•‰èĄèŁłèšŸèšŒè©”è©łè±Ąèłžé†€é‰ŠéŸé˜éšœéž˜äžŠäžˆäžžäč—ć†—ć‰°ćŸŽć ŽćŁŒćŹąćžžæƒ…æ“ŸæĄæ–æ”„çŠ¶ç•łç©Łè’žè­Čé†žéŒ ć˜±ćŸŽéŁŸ"], -["bfa1","æ‹­æ€æź–ç‡­çč”職è‰Čè§ŠéŁŸè•èŸ±ć°»äŒžäżĄäŸ”ć”‡ćš ćŻćŻ©ćżƒæ…ŽæŒŻæ–°æ™‹æŁźæŠ›æ”žæ·±ç”łç–čçœŸç„žç§ŠçŽłè‡ŁèŠŻè–ȘèŠȘèšșèș«èŸ›é€Č針震äșșä»ćˆƒćĄ”ćŁŹć°‹ç”šć°œè…ŽèšŠèż…é™Łé­çŹ„è«é ˆé…ąć›łćŽšé€—ćčćž‚ćž„æŽšæ°Žç‚ŠçĄçČ‹çż èĄ°é‚é…”éŒéŒ˜éšç‘žé«„ćŽ‡ć”©æ•°æžąè¶šé››æźæ‰æ€™è…é —é›€èŁŸ"], -["c0a1","柄æ‘șćŻžäž–ç€Źç•æ˜Żć‡„ćˆ¶ć‹ąć§“ćŸæ€§æˆæ”żæ•Žæ˜Ÿæ™ŽæŁČæ –æ­Łæž…ç‰Č生盛çČŸè–ćŁ°èŁœè„żèȘ èȘ“è«‹é€é†’é’é™æ–‰çšŽè„†éš»ćž­æƒœæˆšæ–„æ˜”æžçŸłç©ç±çžŸè„ŠèČŹè”€è·ĄèčŸçą©ćˆ‡æ‹™æŽ„摂折蚭çȘƒçŻ€èȘŹé›Șç”¶èˆŒè‰ä»™ć…ˆćƒć ćźŁć°‚ć°–ć·æˆŠæ‰‡æ’°æ “æ Žæł‰æ”…æŽ—æŸ“æœœç…Žç…œæ—‹ç©żçź­ç·š"], -["c1a1","çčŠçŸšè…ș舛èˆčè–Šè©źèłŽè·”éžé·éŠ­éŠ‘é–ƒéźźć‰ć–„æŒžç„¶ć…šçŠ…çč•è†łçłŽć™ŒćĄ‘ćČšæŽȘ曟曜愚狙疏疎瀎焖租çČ—çŽ ç”„è˜‡èšŽé˜»éĄéŒ ćƒ§ć‰”ćŒćąć€‰ć–ȘćŁźć„çˆœćź‹ć±€ćŒæƒŁæƒłæœæŽƒæŒżæŽ»æ“æ—©æ›čć·Łæ§æ§œæŒ•ç‡„äș‰ç—©ç›žçȘ“çłŸç·ç¶œèĄè‰è˜è‘Źè’Œè—»èŁ…è”°é€é­éŽ—éœœéš’ćƒćą—æ†Ž"], -["c2a1","è‡“è””èŽˆé€ äżƒćŽć‰‡ćłæŻæ‰æŸæžŹè¶łé€Ÿäż—ć±žèłŠæ—ç¶šć’èą–ć…¶æƒć­˜ć­«ć°Šææ‘éœä»–ć€šć€Șæ±°è©‘ć”Ÿć •ćŠ„æƒ°æ‰“æŸèˆ”æ„•é™€é§„éššäœ“ć †ćŻŸè€ćČ±ćžŻćŸ…æ€ æ…‹æˆŽæ›żæł°æ»žèƒŽè…żè‹”èą‹èČžé€€é€źéšŠé»›éŻ›ä»Łć°ć€§çŹŹé†éĄŒé·čæ»ç€§ć“ć•„ćź…æ‰˜æŠžæ‹“æČąæżŻçąèš—éžæżè«ŸèŒžć‡§è›žćȘ"], -["c3a1","ć©äœ†é”èŸ°ć„Șè„±ć·œç«ȘèŸżæŁšè°·ç‹žé±ˆæšœèȘ°äžčć˜ć˜†ćŠæ‹…æŽąæ—Šæ­Žæ·Ąæč›ç‚­çŸ­ç«ŻçźȘ綻耜胆蛋èȘ•é›ć›ŁćŁ‡ćŒŸæ–­æš–æȘ€æź”ç”·è«‡ć€€çŸ„ćœ°ćŒ›æ„æ™șæ± ç—Žçššçœźè‡Žèœ˜é…éŠłçŻ‰ç•œç«č筑蓄逐秩çȘ’èŒ¶ć«Ąç€äž­ä»Čćź™ćż æŠœæ˜ŒæŸ±æłšè™«èĄ·èš»é…Žé‹łé§æš—ç€ŠçŒȘ苧著èȯ䞁慆懋斋比"], -["c4a1","澖澳ćșćŒ”ćŒ”ćœ«ćŸŽæ‡ČæŒ‘æšąæœæœźç‰’ç”șçœș聎è„č腞蝶èȘżè«œè¶…è·łéŠšé•·é ‚éł„ć‹…æ—ç›Žæœ•æČˆçèłƒéŽźé™łæŽ„ćąœæ€Žæ§ŒèżœéŽšç—›é€šćĄšæ ‚æŽŽæ§»äœƒæŒŹæŸ˜èŸ»è”Šç¶Žé”æ€żæœ°ćȘ棷描玏çˆȘ搊釣鶎äș­äœŽćœć”扃èČžć‘ˆć €ćźšćžćș•ćș­ć»·ćŒŸæ‚ŒæŠ”æŒșææąŻæ±€çą‡çŠŽçš‹ç· è‰‡èš‚è«Šèč„逓"], -["c5a1","é‚žé„­é‡˜éŒŽæł„æ‘˜æ“ąæ•”æ»Žçš„çŹ›é©é‘æșșć“ČćŸčæ’€èœèż­é‰„ć…žćĄ«ć€©ć±•ćș—æ·»çșç”œèČŒè»ąéĄ›ç‚čäŒæźżæŸ±ç”°é›»ć…Žćć ”ćĄ—ćŠŹć± ćŸ’æ–—æœæžĄç™»èŸèł­é€”éƒœéç „ç șćŠȘćșŠćœŸć„Žæ€’ć€’ć…šć†Źć‡ćˆ€ć”ćĄ”ćĄ˜ć„—ćź•ćł¶ć¶‹æ‚ŒæŠ•æ­æ±æĄƒæąŒæŁŸç›—æ·˜æčŻæ¶›çŻç‡ˆćœ“ç—˜ç„·ç­‰ç­”ç­’çł–ç”±ćˆ°"], -["c6a1","è‘Łè•©è—€èšŽèŹ„è±†èžé€ƒé€é™é™¶é ­éš°é—˜ćƒć‹•ćŒć ‚ć°Žæ†§æ’žæŽžçžłç«„èƒŽè„é“éŠ…ćł éŽ‡ćŒżćŸ—ćŸłæ¶œç‰čçŁçŠżçŻ€æŻ’ç‹ŹèȘ­æ ƒæ©Ąć‡žçȘæ€Žć±Šéł¶è‹«ćŻ…é…‰ç€žć™žć±Żæƒ‡æ•ŠæČŒè±šéé “ć‘‘æ›‡éˆć„ˆé‚Łć†…äčć‡Șè–™èŹŽç˜æșé‹æ„ąéŠŽçž„ç•·ć—æ„ è»Ÿé›Łæ±äșŒć°ŒćŒèż©ćŒ‚èł‘è‚‰è™čć»żæ—„äčłć…„"], -["c7a1","ćŠ‚ć°żéŸźä»»ćŠŠćżèȘæżĄçŠ°ç„ąćŻ§è‘±çŒ«ç†±ćčŽćż”捻撚燃çȘäčƒć»Œäč‹ćŸœćšąæ‚©æżƒçŽèƒœè„łè†żèŸČèŠ—èš€ć·ŽæŠŠæ’­èŠ‡æ·æłąæŽŸç¶ç Žć©†çœ”èŠ­éŠŹäżłć»ƒæ‹æŽ’æ•—æŻç›ƒç‰ŒèƒŒè‚șèŒ©é…ć€ćŸčćȘ’æą…æ„łç…€ç‹œèČ·ćŁČèł é™Șé€™èżç§€çŸ§è©äŒŻć‰„ćšæ‹æŸæłŠç™œçź”çČ•èˆ¶è–„èż«æ›æŒ çˆ†çž›èŽ«é§éșŠ"], -["c8a1","ć‡œçź±çĄČçźžè‚‡ç­ˆæ«šćčĄè‚Œç•‘畠慫鉹æșŒç™ș醗é«ȘäŒçœ°æŠœç­é–„éł©ć™șćĄ™è›€éšŒäŒŽćˆ€ćŠćć›ćž†æŹæ–‘æżæ°Ÿæ±Žç‰ˆçŠŻç­ç•”çčèˆŹè—©èČ©çŻ„é‡†ç…©é ’éŁŻæŒœæ™©ç•Șç›€çŁè•ƒè›źćŒȘ捑搩橃ćș‡ćœŒæ‚Č扉æ‰čæŠ«æ–æŻ”æłŒç–Čçšźçą‘ç§˜ç·‹çœ·è‚„èą«èȘčèČ»éżéžéŁ›æš‹ç°žć‚™ć°ŸćŸźæž‡æŻ˜ç”çœ‰çŸŽ"], -["c9a1","錻柊皗ćŒčç–‹é«­ćœŠè†è±è‚˜ćŒŒćż…ç•ąç­†é€ŒæĄ§ć§«ćȘ›çŽç™ŸèŹŹäż”ćœȘæš™æ°·æŒ‚ç“ąç„šèĄšè©•è±čć»Ÿæç—…ç§’è‹—éŒšé‹Čè’œè›­é°­ć“ćœŹæ–Œæ”œç€•èČ§èł“é »æ•ç“¶äžä»˜ćŸ ć€«ć©ŠćŻŒć†šćžƒćșœæ€–æ‰¶æ•·æ–§æ™źæ”źçˆ¶çŹŠè…è†šèŠ™è­œèČ èłŠè”Žé˜œé™„äŸźæ’«æ­Šèˆžè‘Ąè•Șéƒšć°æ„“éąšè‘șè•—äŒć‰ŻćŸ©ćč…æœ"], -["caa1","犏è…čè€‡èŠ†æ·”ćŒ—æ‰•æČžä»ç‰©éź’ćˆ†ć»ć™Žćąłæ†€æ‰źç„šć„źçČ‰çłžçŽ›é›°æ–‡èžäž™äœ”ć…”ćĄ€ćčŁćčłćŒŠæŸ„äžŠè”œé–‰é™›ç±łé ćƒ»ćŁç™–çą§ćˆ„çž„è”‘çź†ćć€‰ç‰‡çŻ‡ç·šèŸșèż”éäŸżć‹‰ćš©ćŒéž­äżèˆ—é‹Șćœƒæ•æ­©ç”«èŁœèŒ”ç©‚ć‹Ÿćą“æ…•æˆŠæšźæŻç°żè©ć€ŁäżžćŒ…ć‘†ć ±ć„‰ćźćł°ćłŻćŽ©ćș–抱捧攟æ–č朋"], -["cba1","æł•æłĄçƒčç Čçž«èƒžèŠłèŒè“Źèœ‚è€’èšȘè±Šé‚Šé‹’éŁœéłłé”ŹäčäșĄć‚ć‰–ćŠćŠšćžœćż˜ćż™æˆżæšŽæœ›æŸæŁ’ć†’çŽĄè‚Șè†šèŹ€èȌèČżé‰Ÿé˜Č搠頬挗惕捜汹æ’ČæœŽç‰§çŠç©†é‡Šć‹ƒæČĄæź†ć €ćčŒć„”æœŹçż»ć‡Ąç›†æ‘©çŁšé­”éș»ćŸ‹ćŠčæ˜§æžšæŻŽć“©æ§™ćč•膜枕éźȘæŸŸé±’æĄäșŠäżŁćˆæŠč末æČ«èż„䟭çč­éșżäž‡æ…ąæș€"], -["cca1","æŒ«è”“ć‘łæœȘé­…ć·łçź•ćČŹćŻ†èœœæčŠè“‘çš”è„ˆćŠ™çČæ°‘çœ ć‹™ć€ąç„Ąç‰ŸçŸ›éœ§é”Ąæ€‹ć©żćš˜ć†„ćć‘œæ˜Žç›Ÿèż·éŠ˜éłŽć§Șç‰æ»…ć…æŁ‰ç¶żç·Źéąéșșæ‘žæšĄèŒ‚ćŠ„ć­ŸæŻ›çŒ›ç›Čç¶Č耗蒙ć„Čæœšé»™ç›źæąć‹żé€…ć°€æˆ»ç±ŸèČ°ć•æ‚¶çŽ‹é–€ćŒäčŸć†¶ć€œçˆșè€¶é‡ŽćŒ„çŸąćŽ„ćœčçŽ„è–Źèšłèșé–æŸłè–źé‘“æ„‰æ„ˆæČč癒"], -["cda1","è«­èŒžć”Żäœ‘ć„Șć‹‡ć‹ćź„ćčœæ‚ æ†‚揖有柚æč§æ¶ŒçŒ¶çŒ·ç”±ç„èŁ•èȘ˜éŠé‚‘éƒ”é›„èžć€•äșˆäœ™äžŽèȘ‰èŒżé ć‚­ćčŒćŠ–ćźčćșžæšæș擁曜愊様掋æș¶ç†”甚çȘŻçŸŠè€€è‘‰è“‰èŠèŹĄèžŠé„é™œé€Šæ…ŸæŠ‘æŹČæČƒæ”ŽçżŒçżŒæ·€çŸ…èžșèŁžæ„èŽ±é Œé›·æŽ›ç”Ąèœé…Șäč±ć”ć”æŹ„æż«è—è˜­èŠ§ćˆ©ćć±„æŽæąšç†ç’ƒ"], -["cea1","ç—ąèŁèŁĄé‡Œé›ąé™žćŸ‹çŽ‡ç«‹è‘ŽæŽ ç•„ćŠ‰æ”æșœç‰ç•™çĄ«çČ’éš†ç«œéŸäŸ¶æ…źæ—…è™œäș†äșźćƒšäžĄć‡ŒćŻźæ–™æąæ¶ŒçŒŸç™‚çž­çšœçł§è‰Żè«’éŒé‡é™”é ˜ćŠ›ç·‘ć€«ćŽ˜æž—æ·‹ç‡çłè‡šèŒȘ隣鱗éșŸç‘ ćĄæ¶™çŽŻéĄžä»€äŒ¶äŸ‹ć†·ćŠ±ć¶ș怜çŽČ瀌苓鈎隷零霊éș—éœąæšŠæ­Žćˆ—ćŠŁçƒˆèŁ‚ć»‰æ‹æ†æŒŁç…‰ç°Ÿç·ŽèŻ"], -["cfa1","è“źé€ŁéŒŹć‘‚é­Żæ«“ç‚‰èł‚è·ŻéœČćŠŽć©ć»ŠćŒ„æœ—æ„ŒæŠ”æ”ȘæŒç‰ąç‹ŒçŻ­è€èŸè‹éƒŽć…­éș“犄肋éŒČè«–ć€­ć’Œè©±æ­Șèł„è„‡æƒ‘æž é·Čäș™äș˜é°è©«è—è•𿀀æčŸçą—è…•"], -["d0a1","ćŒŒäžäž•äžȘäž±äž¶äžŒäžżäč‚äč–äč˜äș‚äș…豫äșŠèˆ’ćŒäșŽäșžäșŸäș äșąäș°äșłäș¶ä»Žä»ä»„ä»†ä»‚ä»—ä»žä»­ä»Ÿä»·äŒ‰äœšäŒ°äœ›äœäœ—äœ‡äœ¶äŸˆäŸäŸ˜äœ»äœ©äœ°äŸ‘äœŻäŸ†äŸ–ć„˜äż”äżŸäżŽäż˜äż›äż‘äżšäżäż€äż„怚怹怔ć€Șć€„ć€…äŒœäż¶ć€Ąć€©ć€ŹäżŸäżŻć€‘ć€†ćƒć‡æœƒć•ććˆćšć–ćŹćžć‚€ć‚šć‚…ć‚Žć‚Č"], -["d1a1","ćƒ‰ćƒŠć‚łćƒ‚ćƒ–ćƒžćƒ„ćƒ­ćƒŁćƒźćƒčćƒ”ć„‰ć„ć„‚ć„–ć„•ć„”ć„šć„Ąć„șć„·ć„Œć„»ć„żć…€ć…’ć…Œć…”ć…ąç«žć…©ć…Șć…źć†€ć†‚ć›˜ć†Œć†‰ć†ć†‘ć†“ć†•ć†–ć†€ć†Šć†ąć†©ć†Ș憫憳憱ć†Čć†°ć†”ć†œć‡…ć‡‰ć‡›ć‡ è™•ć‡©ć‡­ć‡°ć‡”ć‡Ÿćˆ„ćˆ‹ćˆ”ćˆŽćˆ§ćˆȘ戟戳ćˆč扏扄手扌扞扔ć‰Șć‰Žć‰©ć‰łć‰żć‰œćŠćŠ”ćŠ’ć‰±ćŠˆćŠ‘èŸš"], -["d2a1","èŸ§ćŠŹćŠ­ćŠŒćŠ”ć‹ć‹ć‹—ć‹žć‹Łć‹ŠéŁ­ć‹ ć‹łć‹”ć‹žć‹čćŒ†ćŒˆç”žćŒćŒćŒćŒ•ćŒšćŒŁćŒŻćŒ±ćŒłćŒžć€ć†ć…äž—ć‰ćć‡–ćžć©ćźć€˜ć»ć·ćŽ‚ćŽ–ćŽ ćŽŠćŽ„ćŽźćŽ°ćŽ¶ćƒç°’é›™ćŸæ›Œç‡źćźćšć­ćșććœć‘€ćŹć­ćŒćźć¶ć©ćć‘Žć’ć‘”ć’Žć‘Ÿć‘±ć‘·ć‘°ć’’ć‘»ć’€ć‘¶ć’„ć’ć’†ć“‡ć’ąć’žć’„ć’Źć“„ć“ˆć’š"], -["d3a1","ć’«ć“‚ć’€ć’Ÿć’Œć“˜ć“„ć“Šć”ć””ć“œć“źć“­ć“ș擱ć”čć•€ć•Łć•Œć”źć•œć•…ć•–ć•—ć”žć”łć•ć–™ć–€ć’Żć–Šć–Ÿć•»ć•Ÿć–˜ć–žć–źć•Œć–ƒć–©ć–‡ć–šć—šć—…ć—Ÿć—„ć—œć—€ć—”ć˜”ć—·ć˜–ć—Ÿć—œć˜›ć—čć™Žć™ç‡Ÿć˜Žć˜¶ć˜Čć˜žć™«ć™€ć˜Żć™Źć™Șćš†ćš€ćšŠćš ćš”ćšćš„ćšźćš¶ćšŽć›‚ćšŒć›ć›ƒć›€ć›ˆć›Žć›‘ć›“ć›—ć›źć›č最替朄有"], -["d4a1","ćœˆćœ‹ćœćœ“ćœ˜ćœ–ć—‡ćœœćœŠćœ·ćœžćŽćœ»ć€ćć©ćŸ€ćžˆćĄćżćž‰ćž“ćž ćžłćž€ćžȘ枰柃柆柔柒染栊柖柣栋栙栝ćĄČć ĄćĄąćĄ‹ćĄ°æŻ€ćĄ’ć œćĄč汅ćąčćąŸćą«ćąșćŁžćą»ćąžćąźćŁ…ćŁ“ćŁ‘ćŁ—ćŁ™ćŁ˜ćŁ„ćŁœćŁ€ćŁŸćŁŻćŁșćŁčćŁ»ćŁŒćŁœć€‚ć€Šć€ć€›æąŠć€„ć€Źć€­ć€Čć€žć€Ÿç«’ć„•ć„ć„Žć„šć„˜ć„ąć„ ć„§ć„Źć„©"], -["d5a1","ć„žćŠćŠäœžäŸ«ćŠŁćŠČć§†ć§šć§œćŠć§™ć§šćš„ćšŸćš‘ćšœćš‰ćššć©€ć©Źć©‰ćš”ćš¶ć©ąć©ȘćȘšćȘŒćȘŸć«‹ć«‚ćȘœć«Łć«—櫊櫩櫖ć«șć«»ćŹŒćŹ‹ćŹ–ćŹČ櫐ćŹȘćŹ¶ćŹŸć­ƒć­…ć­€ć­‘ć­•ć­šć­›ć­„ć­©ć­°ć­łć­”ć­žæ–ˆć­șćź€ćźƒćźŠćźžćŻƒćŻ‡ćŻ‰ćŻ”ćŻćŻ€ćŻŠćŻąćŻžćŻ„ćŻ«ćŻ°ćŻ¶ćŻłć°…ć°‡ć°ˆć°ć°“ć° ć°ąć°šć°žć°č汁汆汎汓"], -["d6a1","ć±ć±ć­±ć±Źć±źäčąć±¶ć±čćȌćȑćȔ橛ćČ«ćČ»ćȶćČŒćČ·ćł…ćČŸćł‡ćł™ćł©ćłœćłșćł­ć¶ŒćłȘćŽ‹ćŽ•ćŽ—ć”œćŽŸćŽ›ćŽ‘ćŽ”ćŽąćŽšćŽ™ćŽ˜ć”Œć”’ć”Žć”‹ć”Źć”łć”¶ć¶‡ć¶„ć¶‚ć¶ąć¶ć¶Źć¶źć¶œć¶ć¶·ć¶Œć·‰ć·ć·“ć·’ć·–ć·›ć·«ć·Č淔枋枚枙枑枛架枷ćč„ćčƒćč€ćčŽćč—ćč”ćčŸćčąćč€ćč‡ćč”ćč¶ćčșéșŒćčżćș ć»ć»‚ć»ˆć»ć»"], -["d7a1","ć»–ć»Łć»ć»šć»›ć»ąć»Ąć»šć»©ć»Źć»±ć»łć»°ć»Žć»žć»ŸćŒƒćŒ‰ćœćœœćŒ‹ćŒ‘ćŒ–ćŒ©ćŒ­ćŒžćœćœˆćœŒćœŽćŒŻćœ‘ćœ–ćœ—ćœ™ćœĄćœ­ćœłćœ·ćŸƒćŸ‚ćœżćŸŠćŸˆćŸ‘ćŸ‡ćŸžćŸ™ćŸ˜ćŸ ćŸšćŸ­ćŸŒćż–ćż»ćż€ćżžćż±ćżæ‚łćżżæ€Ąæ æ€™æ€æ€©æ€Žæ€±æ€›æ€•æ€«æ€Šæ€æ€ș恚恁æȘæ·æŸæŠæ†ææŁæƒæ€æ‚æŹæ«æ™æ‚æ‚æƒ§æ‚ƒæ‚š"], -["d8a1","æ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒĄæ‚žæƒ æƒ“æ‚Žćż°æ‚œæƒ†æ‚”æƒ˜æ…æ„•æ„†æƒ¶æƒ·æ„€æƒŽæƒșæ„ƒæ„Ąæƒ»æƒ±æ„æ„Žæ…‡æ„Ÿæ„šæ„§æ…Šæ„żæ„Œæ„Źæ„Žæ„œæ…‚æ…„æ…łæ…·æ…˜æ…™æ…šæ…«æ…Žæ…Żæ…„æ…±æ…Ÿæ…æ…“æ…”æ†™æ†–æ†‡æ†Źæ†”æ†šæ†Šæ†‘æ†«æ†źæ‡Œæ‡Šæ‡‰æ‡·æ‡ˆæ‡ƒæ‡†æ†ș懋çœčæ‡æ‡Šæ‡Łæ‡¶æ‡șæ‡Žæ‡żæ‡œæ‡Œæ‡Ÿæˆ€æˆˆæˆ‰æˆæˆŒæˆ”æˆ›"], -["d9a1","æˆžæˆĄæˆȘæˆźæˆ°æˆČæˆłæ‰æ‰Žæ‰žæ‰Łæ‰›æ‰ æ‰šæ‰ŒæŠ‚æŠ‰æ‰ŸæŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹æ‹żæ‹†æ“”æ‹ˆæ‹œæ‹Œæ‹Šæ‹‚æ‹‡æŠ›æ‹‰æŒŒæ‹źæ‹±æŒ§æŒ‚æŒˆæ‹Żæ‹”ææŒŸææœææŽ–æŽŽæŽ€æŽ«æ¶æŽŁæŽæŽ‰æŽŸæŽ”æ«æ©æŽŸæ©æ€æ†æŁæ‰æ’æ¶æ„æ–æŽæ†æ“æŠæ¶æ”æ—æšææ‘§æ‘Żæ‘¶æ‘Žæ”Ș撕撓撄撩撈撌"], -["daa1","æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“ĄæŠŹæ“Łæ“Żæ”Źæ“¶æ“Žæ“Čæ“șæ”€æ“œæ”˜æ”œæ”…æ”€æ”Łæ”«æ”Žæ””æ”·æ”¶æ”žç•‹æ•ˆæ•–æ••æ•æ•˜æ•žæ•æ•Čæ•žæ–‚æ–ƒèźŠæ–›æ–Ÿæ–«æ–·æ—ƒæ—†æ—æ—„æ—Œæ—’æ—›æ—™æ— æ—Ąæ—±æČæ˜Šæ˜ƒæ—»æłæ˜”æ˜¶æ˜Žæ˜œæ™æ™„æ™‰æ™æ™žæ™æ™€æ™§æ™šæ™Ÿæ™ąæ™°æšƒæšˆæšŽæš‰æš„æš˜æšæ›æšč曉暟暌"], -["dba1","æ›„æšžæ›–æ›šæ› æ˜żæ›Šæ›©æ›°æ›”æ›·æœæœ–æœžæœŠæœ§éœžæœźæœżæœ¶ææœžæœ·æ†æžæ æ™æŁæ€æž‰æ°æž©æŒæȘæžŒæž‹æžŠæžĄæž…æž·æŸŻæžŽæŸŹæžłæŸ©æžžæŸ€æŸžæŸæŸąæŸźæžč柎柆柧æȘœæ žæĄ†æ ©æĄ€æĄæ ČæĄŽæąłæ «æĄ™æĄŁæĄ·æĄżæąŸæąæą­æą”æąæą›æąƒæȘźæąčæĄŽæą”æą æąșæ€æąæĄŸæ€æŁŠæ€ˆæŁ˜æ€ąæ€ŠæŁĄæ€ŒæŁ"], -["dca1","æŁ”æŁ§æŁ•æ€¶æ€’æ€„æŁ—æŁŁæ€„æŁčæŁ æŁŻæ€šæ€Șæ€šæ€Łæ€ĄæŁ†æ„čæ„·æ„œæ„žæ„«æ„”感æ„꿀迄޿€œæ„™æ€°æ„Ąæ„žæ„æŠæ„ȘæŠČæŠźæ§æŠżæ§æ§“æŠŸæ§ŽćŻšæ§Šæ§æŠ»æ§ƒæŠ§æšźæŠ‘æŠ æŠœæŠ•æŠŽæ§žæ§šæš‚æš›æ§żæŹŠæ§čæ§Čæ§§æš…æŠ±æšžæ§­æš”æ§«æšŠæš’æ«æšŁæš“æ©„æšŒæ©Čæš¶æ©žæ©‡æ©ąæ©™æ©Šæ©ˆæšžæšąæȘæȘæȘ æȘ„æȘąæȘŁ"], -["dda1","æȘ—蘗æȘ»æ«ƒæ«‚æȘžæȘłæȘŹæ«žæ«‘櫟æȘȘ櫚æ«Șæ«»æŹ…è˜–æ«șæŹ’æŹ–éŹ±æŹŸæŹžæŹ·ç›œæŹčéŁźæ­‡æ­ƒæ­‰æ­æ­™æ­”æ­›æ­Ÿæ­Ąæ­žæ­čæ­żæź€æź„æźƒæźæź˜æź•æźžæź€æźȘæź«æźŻæźČæź±æźłæź·æźŒæŻ†æŻ‹æŻ“æŻŸæŻŹæŻ«æŻłæŻŻéșŸæ°ˆæ°“æ°”æ°›æ°€æ°Łæ±žæ±•æ±ąæ±ȘæČ‚æČæČšæČæČ›æ±Ÿæ±šæ±łæČ’æČæł„æł±æł“æČœæł—æł…æłæČźæČ±æČŸ"], -["dea1","æČșæł›æłŻæł™æłȘæŽŸèĄæŽ¶æŽ«æŽœæŽžæŽ™æŽ”æŽłæŽ’æŽŒæ”Łæ¶“æ”€æ”šæ”čæ”™æ¶Žæ¶•æż€æ¶…æ·čæž•æžŠæ¶”æ·‡æ·Šæ¶žæ·†æ·Źæ·žæ·Œæ·šæ·’æ·…æ·ș淙淀淕æ·Șæ·źæž­æčźæžźæž™æčȿ蟿žŸæžŁæč«æž«æč¶æčæžŸæčƒæžșæčŽæž€æ»żæžæžžæș‚æșȘæș˜æ»‰æș·æ»“æșœæșŻæ»„æșČæ»”滕æșæș„滂æșŸæœæŒ‘çŒæ»Źæ»žæ»ŸæŒżæ»ČæŒ±æ»ŻæŒČ滌"], -["dfa1","挟挓滷柆æœșæœžæŸæŸ€æœŻæœ›æżłæœ­æŸ‚æœŒæœ˜æŸŽæŸ‘æż‚æœŠæŸłæŸŁæŸĄæŸ€æŸčæż†æŸȘæżŸæż•æżŹæż”æż˜æż±æżźæż›ç€‰ç€‹æżșç€‘ç€ç€æżŸç€›ç€šæœŽç€ç€˜ç€Ÿç€°ç€Ÿç€Čç‘çŁç‚™ç‚’ç‚Żçƒ±ç‚Źç‚žç‚łç‚źçƒŸçƒ‹çƒçƒ™ç„‰çƒœç„œç„™ç…„ç…•ç†ˆç…Šç…ąç…Œç…–ç…Źç†ç‡»ç†„ç†•ç†šç†Źç‡—ç†čç†Ÿç‡’ç‡‰ç‡”ç‡Žç‡ ç‡Źç‡§ç‡”ç‡Œ"], -["e0a1","ç‡č燿爍爐爛爹爭爬爰çˆČçˆ»çˆŒçˆżç‰€ç‰†ç‰‹ç‰˜ç‰Žç‰ŸçŠ‚çŠçŠ‡çŠ’çŠ–çŠąçŠ§çŠčçŠČ狃狆狄狎狒狱狠狡ç‹čç‹·ć€çŒ—çŒŠçŒœçŒ–çŒçŒŽçŒŻçŒ©çŒ„çŒŸçŽçé»˜ç—çȘ獚獰獞獔獻çșçˆçŽłçŽçŽ»ç€ç„çźçžç’ąç…ç‘Żç„çžçČçșç‘•çżç‘Ÿç‘™ç‘ç‘œç‘©ç‘°ç‘Łç‘Ș瑶瑟璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓟ç“Čç“°ç“±ç“žç“·ç”„ç”ƒç”…ç”Œç”Žç”ç”•ç”“ç”žç”Šç”Źç”Œç•„ç•ç•Šç•‰ç•›ç•†ç•šç•©ç•€ç•§ç•«ç•­ç•žç•¶ç–†ç–‡ç•Žç–Šç–‰ç–‚ç–”ç–šç–ç–„ç–Łç—‚ç–łç—ƒç–”ç–œç–žç–Œç–±ç—ç—Šç—’ç—™ç—Łç—žç—Ÿç—żç—Œç˜ç—°ç—șç—Čç—łç˜‹ç˜ç˜‰ç˜Ÿç˜§ç˜ ç˜Ąç˜ąç˜€ç˜Žç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™Ąç™ąç™šç™©ç™Ș癧癬癰"], -["e2a1","ç™Č癶癞癌皀皃皈皋皎皖皓皙皚皰皎皞çščçšșç›‚ç›ç›–ç›’ç›žç›Ąç›„ç›§ç›Șè˜Żç›»çœˆçœ‡çœ„çœ©çœ€çœžçœ„çœŠçœ›çœ·çœžç‡çšçšç«ç›ç„çżçŸçč瞎瞋瞑瞠瞞瞰瞶çžčçžżçžŒçžœçž»çŸ‡çŸçŸ—çŸšçŸœçŸŁçŸźçŸŒç Œç ’ç€Šç  ç€ȘçĄ…çąŽçĄŽçą†çĄŒçąšçąŒçąŁçą”çąȘçąŻçŁ‘çŁ†çŁ‹çŁ”çąŸçąŒçŁ…çŁŠçŁŹ"], -["e3a1","çŁ§çŁšçŁœçŁŽç€‡ç€’ç€‘ç€™ç€Źç€«ç„€ç„ ç„—ç„Ÿç„šç„•ç„“ç„șç„żçŠŠçŠçŠ§éœ‹çŠȘ犟犳çŠčçŠșç§‰ç§•ç§§ç§Źç§Ąç§Łçšˆçšçš˜çš™çš çšŸçŠ€çš±çš»çšŸçš·ç©ƒç©—ç©‰ç©Ąç©ąç©©éŸç©°ç©č穜çȘˆçȘ—çȘ•çȘ˜çȘ–çȘ©ç«ˆçȘ°çȘ¶ç«…ç«„çȘżé‚ƒç«‡ç«Šç«ç«ç«•ç«“ç«™ç«šç«ç«Ąç«ąç«Šç«­ç«°çŹ‚çŹçŹŠçŹ†çŹłçŹ˜çŹ™çŹžçŹ”çŹšçŹ¶ç­"], -["e4a1","ç­șçŹ„ç­çŹ‹ç­Œç­…ç­”ç­„ç­Žç­§ç­°ç­±ç­Źç­źçźçź˜çźŸçźçźœçźšçź‹çź’çźç­çź™çŻ‹çŻçŻŒçŻçźŽçŻ†çŻçŻ©ç°‘ç°”çŻŠçŻ„ç± ç°€ç°‡ç°“çŻłçŻ·ç°—ç°çŻ¶ç°Łç°§ç°Șç°Ÿç°·ç°«ç°œç±Œç±ƒç±”ç±ç±€ç±ç±˜ç±Ÿç±€ç±–ç±„ç±Źç±”çȃçȐçČ€çČ­çČąçČ«çČĄçČšçČłçČČçȱçČźçČčçČœçł€çł…çł‚çł˜çł’çłœçłąéŹ»çłŻçłČ糎糶çłș箆"], -["e5a1","çŽ‚çŽœçŽ•çŽŠç”…ç”‹çŽźçŽČ玿玔甆申甖甎ç”Čç”šç”źç”ç”Łç¶“ç¶‰ç”›ç¶ç”œç¶›ç¶șç¶źç¶Łç¶”ç·‡ç¶œç¶«çžœç¶ąç¶Żç·œç¶žç¶Ÿç¶°ç·˜ç·ç·€ç·žç·»ç·Čç·Ąçž…çžŠçžŁçžĄçž’çž±çžŸçž‰çž‹çžąçč†çčŠçž»çž”çžčçčƒçž·çžČçžșçč§çčçč–çčžçč™çčšçččçčȘçč©çčŒçč»çșƒç·•çčœèŸźçčżçșˆçș‰çșŒçș’çșçș“çș”çș–çșŽçș›çșœçŒžçŒș"], -["e6a1","çœ…çœŒçœçœŽçœçœ‘çœ•çœ”çœ˜çœŸçœ çœšçœ©çœ§çœžçŸ‚çŸ†çŸƒçŸˆçŸ‡çŸŒçŸ”çŸžçŸçŸšçŸŁçŸŻçŸČçŸčçŸźçŸ¶çŸžè­±çż…çż†çżŠçż•çż”çżĄçżŠçż©çżłçżčéŁœè€†è€„è€‹è€’è€˜è€™è€œè€Ąè€šè€żè€»èŠè†è’è˜èšèŸèąèšèłèČ聰聶èčèœèżè‚„è‚†è‚…è‚›è‚“è‚šè‚­ć†è‚Źèƒ›èƒ„èƒ™èƒèƒ„èƒšèƒ–è„‰èƒŻèƒ±è„›è„©è„Łè„Żè…‹"], -["e7a1","éš‹è…†è„Ÿè…“è…‘èƒŒè…±è…źè…„è…Šè…Žè†ƒè†ˆè†Šè†€è†‚è† è†•è†€è†Łè…Ÿè†“è†©è†°è†”è†Ÿè†žè†œè‡€è‡‚è†ș臉臍臑臙臘臈臚臟臠臧è‡șè‡»è‡Ÿèˆèˆ‚èˆ…èˆ‡èˆŠèˆèˆèˆ–èˆ©èˆ«èˆžèˆłè‰€è‰™è‰˜è‰è‰šè‰Ÿè‰€è‰ąè‰šè‰Șè‰«èˆźè‰±è‰·è‰žè‰ŸèŠèŠ’èŠ«èŠŸèŠ»èŠŹè‹Ąè‹Łè‹Ÿè‹’è‹Žè‹łè‹ș莓范苻è‹č苞茆苜茉苙"], -["e8a1","茔茎茖èŒČ茱荀èŒčèè…èŒŻèŒ«èŒ—èŒ˜èŽ…èŽšèŽȘèŽŸèŽąèŽ–èŒŁèŽŽèŽ‡èŽŠèŒèŽ”èłè”èŽ èŽ‰èŽšèŽè“è«èŽèœèƒè˜è‹èè·è‡è èČèèąè èŽœèžè”†è»è‘­èȘèŒè•šè’„è‘·è‘«è’­è‘źè’‚è‘©è‘†èŹè‘Żè‘čè”è“Šè‘ąè’čè’żè’Ÿè“™è“è’»è“šè“è“è“†è“–è’Ąè”Ąè“żè“Žè”—è”˜è”Źè”Ÿè”•è””è“Œè•€è•Łè•˜è•ˆ"], -["e9a1","蕁蘂蕋蕕薀薀薈薑薊薚蕭薔薛è—Ș薇薜蕷蕟薐藉è–ș藏è–č藐藕藝藄藜è—č蘊蘓蘋藟è—șè˜†è˜ąè˜šè˜°è˜żè™äč•è™”è™Ÿè™§è™±èš“èšŁèš©èšȘèš‹èšŒèš¶èšŻè›„è›†èš°è›‰è Łèš«è›”è›žè›©è›Źè›Ÿè››è›Żèœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœè›čèœŠèœŽèœżèœ·èœ»èœ„èœ©èœšè èŸèžèŒèŽèŽè—èšèźè™"], -["eaa1","è“èŁèȘè …èžąèžŸèž‚èžŻèŸ‹èžœèŸ€èŸé›–èž«èŸ„èžłèŸ‡èŸ†èž»èŸŻèŸČèŸ è è èŸŸèŸ¶èŸ·è ŽèŸ’è ‘è –è •è ąè Ąè ±è ¶è čè §è »èĄ„èĄ‚èĄ’èĄ™èĄžèĄąèĄ«èąèĄŸèąžèĄ”èĄœèą”èĄČèą‚èą—èą’èąźèą™èąąèąèą€èą°èążèą±èŁƒèŁ„èŁ”èŁ˜èŁ™èŁèŁčè€‚èŁŒèŁŽèŁšèŁČ耄而耊耓脃耞耄è€Ș耫脁脄耻耶耞脌耝脠脞"], -["eba1","脊脀脭è„Șè„Żè„Žè„·è„ŸèŠƒèŠˆèŠŠèŠ“èŠ˜èŠĄèŠ©èŠŠèŠŹèŠŻèŠČèŠșèŠœèŠżè§€è§šè§œè§è§§è§Žè§žèšƒèš–èšèšŒèš›èšèš„èš¶è©è©›è©’è©†è©ˆè©Œè©­è©Źè©ąèȘ…èȘ‚èȘ„èȘšèȘĄèȘ‘èȘ„èȘŠèȘšèȘŁè«„è«è«‚è«šè««è«łè«§è«€è«±èŹ”è« è«ąè«·è«žè«›èŹŒèŹ‡èŹšè«ĄèŹ–èŹèŹ—èŹ èŹłéž«èŹŠèŹ«èŹŸèŹšè­è­Œè­è­Žè­‰è­–è­›è­šè­«"], -["eca1","è­Ÿè­Źè­Żè­Žè­œèź€èźŒèźŽèź’èź“èź–èź™èźšè°șè±è°żè±ˆè±Œè±Žè±è±•è±ąè±Źè±žè±șèȂèȉèȅèȊèȍèȎèČ”è±ŒèČ˜æˆèČ­èČȘèČœèČČèČłèČźèČ¶èłˆèłèł€èłŁèłšèłœèłșèł»èŽ„èŽ…èŽŠèŽ‡èŽèŽèŽéœŽèŽ“èłèŽ”èŽ–è”§è”­è”±è”łè¶è¶™è·‚è¶Ÿè¶ș跏跚跖跌跛跋è·Șè·«è·Ÿè·Łè·Œèžˆèž‰è·żèžèžžèžèžŸèč‚èž”螰螎èčŠ"], -["eda1","èč‡èč‰èčŒèčèčˆèč™èč€èč èžȘèčŁèč•èč¶èčČèčŒèșèș‡èș…èș„èș‹èșŠèș“èș‘èș”èș™èșȘèșĄèșŹèș°è»†èș±èșŸè»…è»ˆè»‹è»›è»Łè»Œè»»è»«è»ŸèŒŠèŒ…èŒ•èŒ’èŒ™èŒ“èŒœèŒŸèŒ›èŒŒèŒŠèŒłèŒ»èŒčèœ…èœ‚èŒŸèœŒèœ‰èœ†èœŽèœ—èœœèœąèœŁèœ€èŸœèŸŸèŸŁèŸ­èŸŻèŸ·èżšèż„èżąèżȘèżŻé‚‡èżŽé€…èżčèżșé€‘é€•é€Ąé€é€žé€–é€‹é€§é€¶é€”é€čèżž"], -["eea1","ééé‘é’é€Žé‰é€Ÿé–é˜éžéšéŻé¶éššéČé‚‚éœé‚é‚€é‚Šé‚‰é‚é‚šé‚Żé‚±é‚”éƒąéƒ€æ‰ˆéƒ›é„‚é„’é„™é„Čé„°é…Šé…–é…˜é…Łé…„é…©é…łé…Č醋醉醂醹醫醯é†Ș醔醎é†șé‡€é‡é‡‰é‡‹é‡é‡–é‡Ÿé‡Ąé‡›é‡Œé‡”é‡¶éˆžé‡żéˆ”éˆŹéˆ•éˆ‘é‰žé‰—é‰…é‰‰é‰€é‰ˆéŠ•éˆżé‰‹é‰éŠœéŠ–éŠ“éŠ›é‰šé‹éŠč銷鋩錏é‹ș鍄錼"], -["efa1","錙錱錚錣éŒșéŒ”éŒ»éœé éŒéźé–éŽ°éŽŹéŽ­éŽ”éŽčé–é—éšé„é˜éƒéééˆé€éšé”é“éƒé‡éé¶é«é”éĄéș鑁鑒鑄鑛鑠鑱鑞é‘Șéˆ©é‘°é‘”é‘·é‘œé‘šé‘Œé‘Ÿé’é‘żé–‚é–‡é–Šé–”é––é–˜é–™é– é–šé–§é–­é–Œé–»é–čé–Ÿé—Šæż¶é—ƒé—é—Œé—•é—”é—–é—œé—Ąé—„é—ąé˜Ąé˜šé˜źé˜Żé™‚é™Œé™é™‹é™·é™œé™ž"], -["f0a1","陝陟险é™Č陬隍隘隕隗éšȘ隧隱éšČ隰階隶隞éšč雎雋雉雍脍雜霍雕é›č霄霆霈霓霎霑霏霖霙需éœȘ霰éœčéœœéœŸé„é†éˆé‚é‰éœé é€éŠéšć‹’é«é±éč鞅靌鞁éșéž†éž‹éžéžéžœéžšéžŠéžŁéžłéžŽéŸƒéŸ†éŸˆéŸ‹éŸœéŸ­éœéŸČç«ŸéŸ¶éŸ”é é Œé žé €é Ąé ·é œéĄ†éĄéĄ‹éĄ«éĄŻéĄ°"], -["f1a1","饱饎饳éąȘéąŻéą±éą¶éŁ„éŁƒéŁ†éŁ©éŁ«é€ƒé€‰é€’é€”é€˜é€Ąé€é€žé€€é€ é€Źé€źé€œé€Ÿé„‚é„‰é„…é„é„‹é„‘é„’é„Œé„•éŠ—éŠ˜éŠ„éŠ­éŠźéŠŒé§Ÿé§›é§é§˜é§‘é§­é§źé§±é§Čé§»é§žéšéšéš…é§ąéš™éš«éš·é©…é©‚é©€é©ƒéšŸé©•é©é©›é©—é©Ÿé©ąé©„é©€é©©é©«é©ȘéȘ­éȘ°éȘŒé«€é«é«‘é«“é«”é«žé«Ÿé«ąé«Łé«Šé«Żé««é«źé«Žé«±é«·"], -["f2a1","é«»éŹ†éŹ˜éŹšéŹŸéŹąéŹŁéŹ„éŹ§éŹšéŹ©éŹȘ鏟鏯éŹČ魄魃魏魍魎魑魘魮鼓鼃鼑鼖鼗鼟鼠鼹鼮鯀鯊éźčéŻ†éŻéŻ‘éŻ’éŻŁéŻąéŻ€éŻ”éŻĄé°șéŻČéŻ±éŻ°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°źé°›é°„é°€é°Ąé°°é±‡é°Čé±†é°Ÿé±šé± é±§é±¶é±žéł§éłŹéł°éŽ‰éŽˆéł«éŽƒéŽ†éŽȘéŽŠé¶ŻéŽŁéŽŸé”„éŽ•éŽ’é”éŽżéŽŸé”†é”ˆ"], -["f3a1","锝锞销锑锐错é”Č鶉鶇鶫锯é”ș鶚鶀鶩é¶Č鷄鷁鶻鶞é¶șé·†é·é·‚é·™é·“é·žé·Šé·­é·Żé·œéžšéž›éžžéč”éččéčœéșéșˆéș‹éșŒéș’éș•éș‘éșéș„éș©éșžéșȘéș­éĄé»Œé»Žé»é»é»”黜點黝黠黄黚黯黎黶黷é»čé»»é»Œé»œéŒ‡éŒˆçš·éŒ•éŒĄéŒŹéŒŸéœŠéœ’éœ”éœŁéœŸéœ éœĄéœŠéœ§éœŹéœȘ霷éœČ霶韕韜韠"], -["f4a1","ć Żæ§‡é™ç‘€ć‡œç†™"], -["f9a1","çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Šć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïšïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·"], -["faa1","ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Żæ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±"], -["fba1","çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄșç€°ïš˜ïš™ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡š"], -["fca1","é‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™é«œé­”é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"], -["fcf1","ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚"], -["8fa2af","Ë˜Ë‡ÂžË™ËÂŻË›ËšïœžÎ„Î…"], -["8fa2c2","¥Š¿"], -["8fa2eb","ÂșÂȘ©Ÿℹ€№"], -["8fa6e1","ΆΈΉΊÎȘ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","ÎŹÎ­ÎźÎŻÏŠÎÏŒÏ‚ÏÏ‹Î°ÏŽ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","ÄŠ"], -["8fa9a6","ÄČ"], -["8fa9a8","ƁĿ"], -["8fa9ab","Ɗ؃"], -["8fa9af","ƩÞ"], -["8fa9c1","ĂŠÄ‘Ă°Ä§Ä±ÄłÄžĆ‚Ć€Ć‰Ć‹ĂžĆ“ĂŸĆ§ĂŸ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ÄœÄžÄąÄ Ä€ĂĂŒĂĂŽÇÄ°ÄȘğĚĎĶÄčÄœÄ»ĆƒĆ‡Ć…Ă‘Ă“Ă’Ă–Ă”Ç‘ĆĆŒĂ•Ć”Ć˜Ć–ĆšĆœĆ ĆžĆ€ĆąĂšĂ™ĂœĂ›ĆŹÇ“Ć°ĆȘĆČĆźĆšÇ—Ç›Ç™Ç•ĆŽĂĆžĆ¶ĆčĆœĆ»"], -["8faba1","ĂĄĂ Ă€ĂąÄƒÇŽÄÄ…Ă„ĂŁÄ‡Ä‰ÄĂ§Ä‹ÄĂ©ĂšĂ«ĂȘěėēęǔĝğ"], -["8fabbd","ĥĄíÏïßǐ"], -["8fabc5","īįĩĔķÄșÄŸÄŒĆ„ĆˆĆ†Ă±ĂłĂČĂ¶ĂŽÇ’Ć‘ĆĂ”Ć•Ć™Ć—Ć›ĆĆĄĆŸĆ„ĆŁĂșĂčĂŒĂ»Ć­Ç”Ć±Ć«ĆłĆŻĆ©Ç˜ÇœÇšÇ–Ć”ĂœĂżĆ·ĆșĆŸĆŒ"], -["8fb0a1","äž‚äž„äž…äžŒäž’äžŸäžŁäž€äžšäž«äžźäžŻäž°äž”äč€äčäč„äč‡äč‘äčšäčœäčŁäčšäč©äčŽäč”äččäčżäșäș–äș—äșäșŻäșčä»ƒä»ä»šä»›ä» ä»Ąä»ąä»šä»Żä»±ä»łä»”ä»œä»Ÿä»żäŒ€äŒ‚äŒƒäŒˆäŒ‹äŒŒäŒ’äŒ•äŒ–äŒ—äŒ™äŒźäŒ±äœ äŒłäŒ”äŒ·äŒčäŒ»äŒŸäœ€äœ‚äœˆäœ‰äœ‹äœŒäœ’äœ”äœ–äœ˜äœŸäœŁäœȘäœŹäœźäœ±äœ·äœžäœčäœș䜜䜟䟁䟂䟄"], -["8fb1a1","䟅䟉䟊䟌䟎䟐䟒䟓䟔䟗䟙䟚䟞䟟äŸČ䟷äŸčäŸ»äŸŒäŸœäŸŸäż€äżäż…äż†äżˆäż‰äż‹äżŒäżäżäż’äżœäż äżąäż°äżČäżŒäżœäżżć€€ć€ć€„ć€‡ć€Šć€Œć€Žć€ć€“ć€—ć€˜ć€›ć€œć€ć€žć€ąć€§ć€źć€°ć€Čć€łć€”ć€ćć‚ć…ć†ćŠćŒćŽć‘ć’ć“ć—ć™ćŸć ćąćŁćŠć§ćȘć­ć°ć±ć€»ć‚ć‚ƒć‚„ć‚†ć‚Šć‚Žć‚ć‚"], -["8fb2a1","悒悓悔悖悛悜悞",4,"ć‚Ș悯悰ć‚čć‚șć‚œćƒ€ćƒƒćƒ„ćƒ‡ćƒŒćƒŽćƒćƒ“ćƒ”ćƒ˜ćƒœćƒćƒŸćƒąćƒ€ćƒŠćƒšćƒ©ćƒŻćƒ±ćƒ¶ćƒșćƒŸć„ƒć„†ć„‡ć„ˆć„‹ć„Œć„ć„ŽćƒČć„ć„—ć„™ć„›ć„œć„ć„žć„Łć„§ć„šć„Źć„­ć„Żć„±ć„łć„Žć„”ć„žć„čć…‚ć…Šć…ć…“ć…•ć…—ć…˜ć…Ÿć…€ć…Šć…Ÿć†ƒć†„ć†‹ć†Žć†˜ć†ć†Ąć†Łć†­ć†žć†șć†Œć†Ÿć†żć‡‚"], -["8fb3a1","ć‡ˆć‡ć‡‘ć‡’ć‡“ć‡•ć‡˜ć‡žć‡ąć‡„ć‡źć‡Čć‡łć‡Žć‡·ćˆćˆ‚ćˆ…ćˆ’ćˆ“ćˆ•ćˆ–ćˆ˜ćˆąćˆšćˆ±ćˆČćˆ”ćˆŒć‰…ć‰‰ć‰•ć‰—ć‰˜ć‰šć‰œć‰Ÿć‰ ć‰Ąć‰Šć‰źć‰·ć‰žć‰čćŠ€ćŠ‚ćŠ…ćŠŠćŠŒćŠ“ćŠ•ćŠ–ćŠ—ćŠ˜ćŠšćŠœćŠ€ćŠ„ćŠŠćŠ§ćŠŻćŠ°ćŠ¶ćŠ·ćŠžćŠșćŠ»ćŠœć‹€ć‹„ć‹†ć‹ˆć‹Œć‹ć‹‘ć‹”ć‹–ć‹›ć‹œć‹Ąć‹„ć‹šć‹©ć‹Șć‹Źć‹°ć‹±ć‹Žć‹¶ć‹·ćŒ€ćŒƒćŒŠćŒ‹"], -["8fb4a1","ćŒŒćŒ‘ćŒ“ćŒ˜ćŒ›ćŒœćŒžćŒŸćŒ„ćŒ§ćŒšćŒ©ćŒ«ćŒŹćŒ­ćŒ°ćŒČćŒ”ćŒŒćŒœćŒŸć‚ćŒć‹ć™ć›ćĄćŁć„ćŹć­ćČćčćŸćŽƒćŽ‡ćŽˆćŽŽćŽ“ćŽ”ćŽ™ćŽćŽĄćŽ€ćŽȘ掫掯ćŽČ掎掔掷掞ćŽșćŽœć€ć…ćć’ć“ć•ćšććžć ćŠć§ć”ć‚ć“ćšćĄć§ćšćȘćŻć±ćŽć”ć‘ƒć‘„ć‘‡ć‘ć‘ć‘žć‘ąć‘€ć‘Šć‘§ć‘©ć‘«ć‘­ć‘źć‘Žć‘ż"], -["8fb5a1","ć’ć’ƒć’…ć’ˆć’‰ć’ć’‘ć’•ć’–ć’œć’Ÿć’Ąć’Šć’§ć’©ć’Ș播撟撱撷ć’čć’șć’»ć’żć“†ć“Šć“ć“Žć“ ć“Șć“Źć“Żć“¶ć“Œć“Ÿć“żć”€ć”ć”…ć”ˆć”‰ć”Œć”ć”Žć”•ć”Ș攫ć”Čć””ć”¶ć”»ć”Œć”œć•ć•‡ć•‰ć•Šć•ć•ć•‘ć•˜ć•šć•›ć•žć• ć•Ąć•€ć•Šć•żć–ć–‚ć–†ć–ˆć–Žć–ć–‘ć–’ć–“ć–”ć–—ć–Łć–€ć–­ć–Č斿旁旃旆旉旋旌旎旑旒"], -["8fb6a1","ć—“ć——ć—˜ć—›ć—žć—ąć—©ć—¶ć—żć˜…ć˜ˆć˜Šć˜",5,"ć˜™ć˜Źć˜°ć˜łć˜”ć˜·ć˜čć˜»ć˜Œć˜œć˜żć™€ć™ć™ƒć™„ć™†ć™‰ć™‹ć™ć™ć™”ć™žć™ ć™Ąć™ąć™Łć™Šć™©ć™­ć™Żć™±ć™Čć™”ćš„ćš…ćšˆćš‹ćšŒćš•ćš™ćššćšćšžćšŸćšŠćš§ćššćš©ćš«ćšŹćš­ćš±ćšłćš·ćšŸć›…ć›‰ć›Šć›‹ć›ć›ć›Œć›ć›™ć›œć›ć›Ÿć›Ąć›€",4,"曱曫曭"], -["8fb7a1","ć›¶ć›·ćœćœ‚ćœ‡ćœŠćœŒćœ‘ćœ•ćœšćœ›ćœćœ ćœąćœŁćœ€ćœ„ćœ©ćœȘćœŹćœźćœŻćœłćœŽćœœćœŸćœżć…ć†ćŒćć’ćąć„ć§ćšć«ć­",4,"ćłćŽć”ć·ćčćșć»ćŒćŸćžćžƒćžŒćž”ćž—ćž™ćžšćžœćžćžžćžŸćžĄćž•ćž§ćžšćž©ćžŹćžžćžœćŸ‡ćŸˆćŸŒćŸćŸ•ćŸćŸžćŸ€ćŸŠćŸ§ćŸ©ćŸ­ćŸ°ćŸ”ćŸ¶ćŸžćŸœćŸŸćŸżć ƒć „ć ˆć ‰ćŸĄ"], -["8fb8a1","栌栍栛栞栟栠栩栧栭ć Čć čć żćĄ‰ćĄŒćĄćĄćĄćĄ•ćĄŸćĄĄćĄ€ćĄ§ćĄšćĄžćĄŒćĄżćą€ćąćą‡ćąˆćą‰ćąŠćąŒćąćąćąćą”ćą–ćąćą ćąĄćąąćąŠćą©ćą±ćąČćŁ„ćąŒćŁ‚ćŁˆćŁćŁŽćŁćŁ’ćŁ”ćŁ–ćŁšćŁćŁĄćŁąćŁ©ćŁłć€…ć€†ć€‹ć€Œć€’ć€“ć€”è™ć€ć€Ąć€Łć€€ć€šć€Żć€°ć€łć€”ć€¶ć€żć„ƒć„†ć„’ć„“ć„™ć„›ć„ć„žć„Ÿć„Ąć„Łć„«ć„­"], -["8fb9a1","愯ć„Č愔愶ć„čć„»ć„ŒćŠ‹ćŠŒćŠŽćŠ’ćŠ•ćŠ—ćŠŸćŠ€ćŠ§ćŠ­ćŠźćŠŻćŠ°ćŠłćŠ·ćŠșćŠŒć§ć§ƒć§„ć§ˆć§Šć§ć§’ć§ć§žć§Ÿć§Łć§€ć§§ć§źć§Żć§±ć§Čć§Žć§·ćš€ćš„ćšŒćšćšŽćš’ćš“ćšžćšŁćš€ćš§ćššćšȘćš­ćš°ć©„ć©…ć©‡ć©ˆć©Œć©ć©•ć©žć©Łć©„ć©§ć©­ć©·ć©șć©»ć©ŸćȘ‹ćȘćȘ“ćȘ–ćȘ™ćȘœćȘžćȘŸćȘ ćȘąćȘ§ćȘŹćȘ±ćȘČćȘłćȘ”ćȘžćȘșćȘ»ćȘż"], -["8fbaa1","ć«„ć«†ć«ˆć«ć«šć«œć« ć«„ć«Șć«źć«”ć«¶ć«œćŹ€ćŹćŹˆćŹ—ćŹŽćŹ™ćŹ›ćŹćŹĄćŹ„ćŹ­ćŹžć­ć­‹ć­Œć­’ć­–ć­žć­šć­źć­Żć­Œć­œć­Ÿć­żćźćź„ćź†ćźŠćźŽćźćź‘ćź“ćź”ćź–ćźšćź©ćźŹćź­ćźŻćź±ćźČćź·ćźșćźŒćŻ€ćŻćŻćŻćŻ–",4,"ćŻ ćŻŻćŻ±ćŻŽćŻœć°Œć°—ć°žć°Ÿć°Łć°Šć°©ć°«ć°Źć°źć°°ć°Čć°”ć°¶ć±™ć±šć±œć±ąć±Łć±§ć±šć±©"], -["8fbba1","汭汰汎汔ć±șć±»ć±Œć±œćȇćȈćȊćȏćȒćȝćȟćČ ćČąćČŁćČŠćČȘćČČćČŽćČ”ćČșćł‰ćł‹ćł’ćłćł—ćłźćł±ćłČćłŽćŽćŽ†ćŽćŽ’ćŽ«ćŽŁćŽ€ćŽŠćŽ§ćŽ±ćŽŽćŽčćŽœćŽżć”‚ć”ƒć”†ć”ˆć”•ć”‘ć”™ć”Šć”Ÿć” ć”Ąć”ąć”€ć”Șć”­ć”°ć”čć”șć”Ÿć”żć¶ć¶ƒć¶ˆć¶Šć¶’ć¶“ć¶”ć¶•ć¶™ć¶›ć¶Ÿć¶ ć¶§ć¶«ć¶°ć¶Žć¶žć¶čć·ƒć·‡ć·‹ć·ć·Žć·˜ć·™ć· ć·€"], -["8fbca1","ć·©ć·žć·č澀澇澍澒澔澕澘澟澠澼澹ćžČćž”ćžŸćč‹ćčćč‰ćč‘ćč–ćč˜ćč›ćčœćčžćčšćčȘ",4,"ćč°ćș€ćș‹ćșŽćșąćș€ćș„ćșšćșȘćșŹćș±ćșłćșœćșŸćșżć»†ć»Œć»‹ć»Žć»‘ć»’ć»”ć»•ć»œć»žć»„ć»«ćŒ‚ćŒ†ćŒ‡ćŒˆćŒŽćŒ™ćŒœćŒćŒĄćŒąćŒŁćŒ€ćŒšćŒ«ćŒŹćŒźćŒ°ćŒŽćŒ¶ćŒ»ćŒœćŒżćœ€ćœ„ćœ…ćœ‡ćœćœćœ”ćœ˜ćœ›ćœ ćœŁćœ€ćœ§"], -["8fbda1","ćœŻćœČćœŽćœ”ćœžćœșćœœćœŸćŸ‰ćŸćŸćŸ–ćŸœćŸćŸąćŸ§ćŸ«ćŸ€ćŸŹćŸŻćŸ°ćŸ±ćŸžćż„ćż‡ćżˆćż‰ćż‹ćż",4,"濞濥濹濚濩ćżȘ濏濭濟濯ćżČćżłćż¶ćżșćżŒæ€‡æ€Šæ€æ€“æ€”æ€—æ€˜æ€šæ€Ÿæ€€æ€­æ€łæ€”æ€æ‡æˆæ‰æŒæ‘æ”æ–æ—ææĄæ§æ±æŸæżæ‚‚æ‚†æ‚ˆæ‚Šæ‚Žæ‚‘æ‚“æ‚•æ‚˜æ‚æ‚žæ‚ąæ‚€æ‚„æ‚šæ‚°æ‚±æ‚·"], -["8fbea1","æ‚»æ‚Ÿæƒ‚æƒ„æƒˆæƒ‰æƒŠæƒ‹æƒŽæƒæƒ”æƒ•æƒ™æƒ›æƒæƒžæƒąæƒ„æƒČ惔惞惌惜愂愇愊愌愐",4,"æ„–æ„—æ„™æ„œæ„žæ„ąæ„Ș愫愰愱愔愶愷æ„čæ…æ……æ…†æ…‰æ…žæ… æ…Źæ…Čæ…žæ…»æ…Œæ…żæ†€æ†æ†ƒæ†„憋憍憒憓憗憘憜憝憟憠憄憚æ†Ș憭憞æ†čæ†Œæ‡€æ‡æ‡‚æ‡Žæ‡æ‡•æ‡œæ‡æ‡žæ‡Ÿæ‡Ąæ‡ąæ‡§æ‡©æ‡„"], -["8fbfa1","æ‡Źæ‡­æ‡Żæˆæˆƒæˆ„æˆ‡æˆ“æˆ•æˆœæˆ æˆąæˆŁæˆ§æˆ©æˆ«æˆčæˆœæ‰‚æ‰ƒæ‰„æ‰†æ‰Œæ‰æ‰‘æ‰’æ‰”æ‰–æ‰šæ‰œæ‰€æ‰­æ‰Żæ‰łæ‰șæ‰œæŠæŠŽæŠæŠæŠŠæŠšæŠłæŠ¶æŠ·æŠșæŠŸæŠżæ‹„æ‹Žæ‹•æ‹–æ‹šæ‹Șæ‹Č拎拌拜挃挄挊挋挍挐挓挖挘挩æŒȘ挭挔挶æŒčæŒŒææ‚æƒæ„æ†æŠæ‹æŽæ’æ“æ”æ˜æ›æ„æŠæŹæ­æ±æŽæ”"], -["8fc0a1","æžæŒæœæżæŽ‚æŽ„æŽ‡æŽŠæŽæŽ”æŽ•æŽ™æŽšæŽžæŽ€æŽŠæŽ­æŽźæŽŻæŽœææ…æˆæŽæ‘æ“æ”æ•æœæ æ„æȘæŹæČæłæ”æžæčæ‰æŠææ’æ”æ˜æžæ æąæ€æ„æ©æȘæŻæ°æ”æœæżæ‘‹æ‘æ‘‘æ‘’æ‘“æ‘”æ‘šæ‘›æ‘œæ‘æ‘Ÿæ‘ æ‘Ąæ‘Łæ‘­æ‘łæ‘Žæ‘»æ‘œæ’…æ’‡æ’æ’æ’‘æ’˜æ’™æ’›æ’æ’Ÿæ’Ąæ’Łæ’Šæ’šæ’Źæ’łæ’œæ’Ÿæ’ż"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擀擄擩æ“Șæ“­æ“°æ“”æ“·æ“»æ“żæ”æ”„æ”ˆæ”‰æ”Šæ”æ”“æ””æ”–æ”™æ”›æ”žæ”Ÿæ”ąæ”Šæ”©æ”źæ”±æ”ș攌攜敃敇敉敐敒敔敟敠敧敫æ•șæ•œæ–æ–…æ–Šæ–’æ–•æ–˜æ–æ– æ–Łæ–Šæ–źæ–Čæ–łæ–Žæ–żæ—‚旈旉旎旐旔旖旘旟旰æ—Čæ—Žæ—”æ—čæ—Ÿæ—żæ˜€æ˜„昈昉昍昑昒昕昖昝"], -["8fc2a1","æ˜žæ˜Ąæ˜ąæ˜Łæ˜€æ˜Šæ˜©æ˜Șæ˜«æ˜Źæ˜źæ˜°æ˜±æ˜łæ˜čæ˜·æ™€æ™…æ™†æ™Šæ™Œæ™‘æ™Žæ™—æ™˜æ™™æ™›æ™œæ™ æ™Ąæ›»æ™Șæ™«æ™Źæ™Ÿæ™łæ™”æ™żæ™·æ™žæ™č晻暀晌暋暌暍暐暒暙暚暛暜暟暠暀暭暱æšČæš”æš»æšżæ›€æ›‚æ›ƒæ›ˆæ›Œæ›Žæ›æ›”æ››æ›Ÿæ›šæ›«æ›Źæ›źæ›șæœ…æœ‡æœŽæœ“æœ™æœœæœ æœąæœłæœŸæ…æ‡æˆæŒæ”æ•æ"], -["8fc3a1","æŠæŹæźæŽæ¶æ»æžæž„æžŽæžæž‘æž“æž–æž˜æž™æž›æž°æž±æžČ枔枻枌果æŸčæŸ€æŸ‚æŸƒæŸ…æŸˆæŸ‰æŸ’æŸ—æŸ™æŸœæŸĄæŸŠæŸ°æŸČæŸ¶æŸ·æĄ’æ ”æ ™æ æ Ÿæ šæ §æ Źæ ­æ Żæ °æ ±æ łæ »æ żæĄ„æĄ…æĄŠæĄŒæĄ•æĄ—æĄ˜æĄ›æĄ«æĄź",4,"æĄ”æĄčæĄșæĄ»æĄŒæą‚æą„æą†æąˆæą–æą˜æąšæąœæąĄæąŁæą„æą©æąȘæąźæąČæą»æŁ…æŁˆæŁŒæŁ"], -["8fc4a1","æŁæŁ‘æŁ“æŁ–æŁ™æŁœæŁæŁ„æŁšæŁȘæŁ«æŁŹæŁ­æŁ°æŁ±æŁ”æŁ¶æŁ»æŁŒæŁœæ€†æ€‰æ€Šæ€æ€‘æ€“æ€–æ€—æ€±æ€łæ€”æ€žæ€»æ„‚æ„…æ„‰æ„Žæ„—æ„›æ„Łæ„€æ„„æ„Šæ„šæ„©æ„Źæ„°æ„±æ„Čæ„șæ„»æ„żæŠ€æŠæŠ’æŠ–æŠ˜æŠĄæŠ„æŠŠæŠšæŠ«æŠ­æŠŻæŠ·æŠžæŠșæŠŒæ§…æ§ˆæ§‘æ§–æ§—æ§ąæ§„æ§źæ§Żæ§±æ§łæ§”æ§Ÿæš€æšæšƒæšæš‘æš•æššæšæš æš€æššæš°æšČ"], -["8fc5a1","æšŽæš·æš»æšŸæšżæ©…æ©†æ©‰æ©Šæ©Žæ©æ©‘æ©’æ©•æ©–æ©›æ©€æ©§æ©Șæ©±æ©łæ©ŸæȘæȘƒæȘ†æȘ‡æȘ‰æȘ‹æȘ‘æȘ›æȘæȘžæȘŸæȘ„æȘ«æȘŻæȘ°æȘ±æȘŽæȘœæȘŸæȘżæ«†æ«‰æ«ˆæ«Œæ«æ«”æ«•æ«–æ«œæ«æ«€æ«§æ«Źæ«°æ«±æ«Čæ«Œæ«œæŹ‚æŹƒæŹ†æŹ‡æŹ‰æŹæŹæŹ‘æŹ—æŹ›æŹžæŹ€æŹšæŹ«æŹŹæŹŻæŹ”æŹ¶æŹ»æŹżæ­†æ­Šæ­æ­’æ­–æ­˜æ­æ­ æ­§æ­«æ­źæ­°æ­”æ­œ"], -["8fc6a1","æ­Ÿæź‚æź…æź—æź›æźŸæź æźąæźŁæźšæź©æźŹæź­æźźæź°æźžæźčæźœæźŸæŻƒæŻ„æŻ‰æŻŒæŻ–æŻšæŻĄæŻŁæŻŠæŻ§æŻźæŻ±æŻ·æŻčæŻżæ°‚æ°„æ°…æ°‰æ°æ°Žæ°æ°’æ°™æ°Ÿæ°Šæ°§æ°šæ°Źæ°źæ°łæ°”æ°¶æ°șæ°»æ°żæ±Šæ±‹æ±æ±æ±’æ±”æ±™æ±›æ±œæ±«æ±­æ±Żæ±Žæ±¶æ±žæ±čæ±»æČ…æČ†æČ‡æČ‰æČ”æČ•æČ—æČ˜æČœæČŸæČ°æČČæČŽæł‚æł†æłæłæłæł‘æł’æł”æł–"], -["8fc7a1","æłšæłœæł æł§æł©æł«æłŹæłźæłČæłŽæŽ„æŽ‡æŽŠæŽŽæŽæŽ‘æŽ“æŽšæŽŠæŽ§æŽšæ±§æŽźæŽŻæŽ±æŽčæŽŒæŽżæ”—æ”žæ”Ÿæ”Ąæ”„æ”§æ”Żæ”°æ”Œæ¶‚æ¶‡æ¶‘æ¶’æ¶”æ¶–æ¶—æ¶˜æ¶Șæ¶Źæ¶Žæ¶·æ¶čæ¶œæ¶żæ·„æ·ˆæ·Šæ·Žæ·æ·–æ·›æ·æ·Ÿæ· æ·ąæ·„æ·©æ·Żæ·°æ·Žæ·¶æ·Œæž€æž„æžžæžąæž§æžČæž¶æžč枻枌æč„æč…æčˆæč‰æč‹æčæč‘æč’æč“æč”æč—æčœæčæčž"], -["8fc8a1","æčąæčŁæčšæčłæč»æčœæșæș“æș™æș æș§æș­æșźæș±æșłæș»æșżæ»€æ»æ»ƒæ»‡æ»ˆæ»Šæ»æ»Žæ»æ»«æ»­æ»źæ»č滻滜挄挈挊挌挍挖挘挚挛挊挩æŒȘæŒŻæŒ°æŒłæŒ¶æŒ»æŒŒæŒ­æœæœ‘æœ’æœ“æœ—æœ™æœšæœæœžæœĄæœąæœšæœŹæœœæœŸæŸƒæŸ‡æŸˆæŸ‹æŸŒæŸæŸæŸ’æŸ“æŸ”æŸ–æŸšæŸŸæŸ æŸ„æŸŠæŸ§æŸšæŸźæŸŻæŸ°æŸ”æŸ¶æŸŒæż…æż‡æżˆæżŠ"], -["8fc9a1","æżšæżžæżšæż©æż°æż”æżčæżŒæżœç€€ç€…ç€†ç€‡ç€ç€—ç€ ç€Łç€Żç€Žç€·ç€čç€Œçƒç„çˆç‰çŠç‹ç”ç•ççžçŽç€ç„çŹçźç”ç¶çŸç‚ç‚…ç‚†ç‚”",4,"炛炀炫炰炱炎炷烊烑烓烔烕烖烘烜烀çƒș焃",4,"ç„‹ç„Œç„ç„žç„ ç„«ç„­ç„Żç„°ç„±ç„žç…ç……ç…†ç…‡ç…Šç…‹ç…ç…’ç…—ç…šç…œç…žç… "], -["8fcaa1","煹ç…č熀熅熇熌熒熚熛熠熱熯熰ç†Č熳ç†șç†żç‡€ç‡ç‡„ç‡‹ç‡Œç‡“ç‡–ç‡™ç‡šç‡œç‡žç‡Ÿçˆ€çˆ‡çˆˆçˆ‰çˆ“çˆ—çˆšçˆçˆŸçˆ€çˆ«çˆŻçˆŽçˆžçˆčç‰ç‰‚ç‰ƒç‰…ç‰Žç‰ç‰ç‰“ç‰•ç‰–ç‰šç‰œç‰žç‰ ç‰Łç‰šç‰«ç‰źç‰Żç‰±ç‰·ç‰žç‰»ç‰Œç‰żçŠ„çŠ‰çŠçŠŽçŠ“çŠ›çŠšçŠ­çŠźçŠ±çŠŽçŠŸç‹ç‹‡ç‹‰ç‹Œç‹•ç‹–ç‹˜ç‹Ÿç‹„ç‹łç‹Žç‹ș狻"], -["8fcba1","ç‹ŸçŒ‚çŒ„çŒ…çŒ‡çŒ‹çŒçŒ’çŒ“çŒ˜çŒ™çŒžçŒąçŒ€çŒ§çŒšçŒŹçŒ±çŒČ猔çŒșçŒ»çŒœçƒççç’ç–ç˜ççžçŸç çŠç§ç©ç«çŹçźçŻç±ç·çčçŒçŽ€çŽçŽƒçŽ…çŽ†çŽŽçŽçŽ“çŽ•çŽ—çŽ˜çŽœçŽžçŽŸçŽ çŽąçŽ„çŽŠçŽȘ玫玭玔玷çŽčçŽŒçŽœçŽżç…ç†ç‰ç‹çŒçç’ç“ç–ç™ççĄçŁçŠç§ç©çŽç”ç·çčçș珻珜"], -["8fcca1","çżç€çç„ç‡çŠç‘çšç›ç€çŠçš",9,"çčç‘€ç‘ƒç‘„ç‘†ç‘‡ç‘‹ç‘ç‘‘ç‘’ç‘—ç‘ç‘ąç‘Šç‘§ç‘šç‘«ç‘­ç‘źç‘±ç‘Čç’€ç’ç’…ç’†ç’‡ç’‰ç’ç’ç’‘ç’’ç’˜ç’™ç’šç’œç’Ÿç’ ç’Ąç’Łç’Šç’šç’©ç’Șç’«ç’źç’Żç’±ç’Čç’”ç’čç’»ç’żç“ˆç“‰ç“Œç“ç““ç“˜ç“šç“›ç“žç“Ÿç“€ç“šç“Ș瓫瓯瓎ç“șç“»ç“Œç“żç”†"], -["8fcda1","甒甖甗甠甥甀甧甩ç”Ș甯甶ç”čç”œç”Ÿç”żç•€ç•ƒç•‡ç•ˆç•Žç•ç•’ç•—ç•žç•Ÿç•Ąç•Żç•±ç•č",5,"ç–ç–…ç–ç–’ç–“ç–•ç–™ç–œç–ąç–€ç–Žç–șç–żç—€ç—ç—„ç—†ç—Œç—Žç—ç——ç—œç—Ÿç— ç—Ąç—€ç—§ç—Źç—źç—Żç—±ç—čç˜€ç˜‚ç˜ƒç˜„ç˜‡ç˜ˆç˜Šç˜Œç˜ç˜’ç˜“ç˜•ç˜–ç˜™ç˜›ç˜œç˜ç˜žç˜Łç˜„ç˜Šç˜©ç˜­ç˜Č瘳瘔瘞ç˜č"], -["8fcea1","ç˜șç˜Œç™Šç™€ç™ç™ƒç™„ç™…ç™‰ç™‹ç™•ç™™ç™Ÿç™€ç™„ç™­ç™źç™Żç™±ç™Žçšçš…çšŒçšçš•çš›çšœçšçšŸçš çšą",6,"çšȘçš­çšœç›ç›…ç›‰ç›‹ç›Œç›Žç›”ç›™ç› ç›Šç›šç›Źç›°ç›±ç›¶ç›čç›Œçœ€çœ†çœŠçœŽçœ’çœ”çœ•çœ—çœ™çœšçœœçœąçœšçœ­çœźçœŻçœŽçœ”çœ¶çœčçœœçœŸç‚ç…ç†çŠççŽçç’ç–ç—çœçžçŸç çą"], -["8fcfa1","着睧çȘ睬睰çČ睳睮çșçœçž€çž„çžŒçžçž”çž•çž–çžšçžŸçžąçž§çžȘçžźçžŻçž±çž”çžŸçŸƒçŸ‰çŸ‘çŸ’çŸ•çŸ™çŸžçŸŸçŸ çŸ€çŸŠçŸȘçŸŹçŸ°çŸ±çŸŽçŸžçŸ»ç …ç †ç ‰ç ç Žç ‘ç ç Ąç ąç Łç ­ç źç °ç ”ç ·çĄƒçĄ„çĄ‡çĄˆçĄŒçĄŽçĄ’çĄœçĄžçĄ çĄĄçĄŁçĄ€çĄšçĄȘ祟çĄșçĄŸçąŠçąçą”çą˜çąĄçąçąžçąŸçą€çąšçąŹçą­çą°çą±çąČçął"], -["8fd0a1","çą»çąœçążçŁ‡çŁˆçŁ‰çŁŒçŁŽçŁ’çŁ“çŁ•çŁ–çŁ€çŁ›çŁŸçŁ çŁĄçŁŠçŁȘçŁČ磳瀀磶磷çŁșçŁ»çŁżç€†ç€Œç€ç€šç€œç€žç€Ÿç€ ç€„ç€§ç€©ç€­ç€±ç€Žç€”ç€»ç€œç€żç„„ç„…ç„†ç„Šç„‹ç„ç„‘ç„”ç„˜ç„›ç„œç„§ç„©ç„«ç„Čç„čç„»ç„Œç„ŸçŠ‹çŠŒçŠ‘çŠ“çŠ”çŠ•çŠ–çŠ˜çŠ›çŠœçŠĄçŠšçŠ©çŠ«çŠŻçŠ±çŠŽçŠžçŠ»ç§‚ç§„ç§‡ç§ˆç§Šç§ç§”ç§–ç§šç§ç§ž"], -["8fd1a1","ç§ ç§ąç§„ç§Șç§«ç§­ç§±ç§žç§Œçš‚çšƒçš‡çš‰çšŠçšŒçš‘çš•çš›çšžçšĄçš§çš«çš­çšŻçš°çšŽçš”çšžçščçšș穄穅穇穈穌穕穖穙穜穝穟穠穄穧ç©Ș穭穔穞穟çȘ€çȘ‚çȘ…çȘ†çȘŠçȘ‹çȘçȘ‘çȘ”çȘžçȘ çȘŁçȘŹçȘłçȘ”çȘčçȘ»çȘŒç«†ç«‰ç«Œç«Žç«‘ç«›ç«šç«©ç««ç«Źç«±ç«Žç«»ç«œç«ŸçŹ‡çŹ”çŹŸçŹŁçŹ§çŹ©çŹȘ珫班珟珯珰"], -["8fd2a1","çŹ±çŹŽçŹœçŹżç­€ç­ç­‡ç­Žç­•ç­ ç­€ç­Šç­©ç­Șç­­ç­Żç­Č筳筷矄矉矎矐矑矖矛矞矠矄矏矯矰çźČ矔矶çźșçź»çźŒçźœçŻ‚çŻ…çŻˆçŻŠçŻ”çŻ–çŻ—çŻ™çŻšçŻ›çŻšçŻȘçŻČ篎篔篞çŻčçŻșçŻŒçŻŸç°ç°‚ç°ƒç°„ç°†ç°‰ç°‹ç°Œç°Žç°ç°™ç°›ç° ç°„ç°Šç°šç°Źç°±ç°łç°Žç°¶ç°čç°ș籆籊籕籑籒籓籙",5], -["8fd3a1","籥籣籧籩籭籟籰ç±Čç±č籌籜çȆçȇçȏçȔçȞçČ çČŠçȰçȶçČ·çČșçČ»çČŒçČżçł„çł‡çłˆçł‰çłçłçł“çł”çł•çł—çł™çłšçłçłŠçł©çł«çł”çŽƒçŽ‡çŽˆçŽ‰çŽçŽ‘çŽ’çŽ“çŽ–çŽçŽžçŽŁçŽŠçŽȘ玭玱玌玜玟甀甁甇甈甍甑甓甗甙甚甜甝甄甧ç”Ș田甞ç”șç”»ç”żç¶ç¶‚ç¶ƒç¶…ç¶†ç¶ˆç¶‹ç¶Œç¶ç¶‘ç¶–ç¶—ç¶"], -["8fd4a1","綞綊綧ç¶Șç¶łç¶¶ç¶·ç¶č緂",4,"ç·Œç·ç·Žç·—ç·™çž€ç·ąç·„ç·Šç·Ș緫緭緱緔緶ç·čç·șçžˆçžçž‘çž•çž—çžœçžçž çž§çžšçžŹçž­çžŻçžłçž¶çžżçč„çč…çč‡çčŽçčçč’çč˜çčŸçčĄçčąçč„çč«çčźçčŻçčłçčžçčŸçșçș†çș‡çșŠçșçș‘çș•çș˜çșšçșçșžçŒŒçŒ»çŒœçŒŸçŒżçœƒçœ„çœ‡çœçœ’çœ“çœ›çœœçœçœĄçœŁçœ€çœ„眊眭"], -["8fd5a1","çœ±çœœçœŸçœżçŸ€çŸ‹çŸçŸçŸçŸ‘çŸ–çŸ—çŸœçŸĄçŸąçŸŠçŸȘçŸ­çŸŽçŸŒçŸżçż€çżƒçżˆçżŽçżçż›çżŸçżŁçż„çżšçżŹçżźçżŻçżČçżșçżœçżŸçżżè€‡è€ˆè€Šè€è€Žè€è€‘è€“è€”è€–è€è€žè€Ÿè€ è€€è€Šè€Źè€źè€°è€Žè€”è€·è€čè€ș而耟聀聄聠聀聊聭聱联肁肈肎肜肞肊肧肫肞è‚čèƒˆèƒèƒèƒ’èƒ”èƒ•èƒ—èƒ˜èƒ èƒ­èƒź"], -["8fd6a1","胰èƒČèƒłèƒ¶èƒčèƒșèƒŸè„ƒè„‹è„–è„—è„˜è„œè„žè„ è„€è„§è„Źè„°è„”è„șè„Œè……è…‡è…Šè…Œè…’è…—è… è…Ąè…§è…šè…©è…­è…Żè…·è†è†è†„è†…è††è†‹è†Žè†–è†˜è†›è†žè†ąè†źè†Čè†Žè†»è‡‹è‡ƒè‡…è‡Šè‡Žè‡è‡•è‡—è‡›è‡è‡žè‡Ąè‡€è‡«è‡Źè‡°è‡±è‡Č臔臶臞è‡čè‡œè‡żèˆ€èˆƒèˆèˆ“èˆ”èˆ™èˆšèˆèˆĄèˆąèˆšèˆČ舎èˆș艃艄艅艆"], -["8fd7a1","è‰‹è‰Žè‰è‰‘è‰–è‰œè‰ è‰Łè‰§è‰­è‰Žè‰»è‰œè‰żèŠ€èŠèŠƒèŠ„èŠ‡èŠ‰èŠŠèŠŽèŠ‘èŠ”èŠ–èŠ˜èŠšèŠ›èŠ èŠĄèŠŁèŠ€èŠ§èŠšèŠ©èŠȘèŠźèŠ°èŠČ芎芷èŠșèŠŒèŠŸèŠżè‹†è‹è‹•è‹šè‹ è‹ąè‹€è‹šè‹Șè‹­è‹Żè‹¶è‹·è‹œè‹ŸèŒ€èŒèŒ‡èŒˆèŒŠèŒ‹è”èŒ›èŒèŒžèŒŸèŒĄèŒąèŒŹèŒ­èŒźèŒ°èŒłèŒ·èŒș茌茜荂荃荄荇荍荎荑荕荖荗荰荞"], -["8fd8a1","èœèżèŽ€èŽ‚èŽ„èŽ†èŽèŽ’èŽ”èŽ•èŽ˜èŽ™èŽ›èŽœèŽèŽŠèŽ§èŽ©èŽŹèŽŸèŽżè€è‡è‰èèè‘è”èè“èšèȘ菶菞èčèŒèè†èŠèè‘è•è™èŽ­èŻèč葅葇葈葊葍葏葑葒葖葘葙葚葜葠葀葄葧è‘Șè‘°è‘łè‘Žè‘¶è‘žè‘Œè‘œè’è’…è’’è’“è’•è’žè’Šè’šè’©è’Șè’Żè’±è’Žè’ș蒜蒟蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧è“Șè“Żè“°è“±è“Č蓷è”Čè“șè“»è“œè”‚è”ƒè”‡è”Œè”Žè”è”œè”žè”ąè”Łè”€è”„è”§è”Șè”«è”Żè”łè”Žè”¶è”żè•†è•",4,"蕖蕙蕜",6,"è•€è•«è•Żè•čè•șè•»è•œè•żè–è–…è–†è–‰è–‹è–Œè–è–“è–˜è–è–Ÿè– è–ąè–„è–§è–Žè–¶è–·è–žè–Œè–œè–Ÿè–żè—‚è—‡è—Šè—‹è—Žè–­è—˜è—šè—Ÿè— è—Šè—šè—­è—łè—¶è—Œ"], -["8fdaa1","è—żè˜€è˜„è˜…è˜è˜Žè˜è˜‘è˜’è˜˜è˜™è˜›è˜žè˜Ąè˜§è˜©è˜¶è˜žè˜ș蘌蘜虀虂虆虒虓虖虗虘虙虝虠",4,"è™©è™Źè™Żè™”è™¶è™·è™șèšèš‘èš–èš˜èššèšœèšĄèšŠèš§èššèš­èš±èšłèšŽèš”èš·èšžèščèšżè›€è›è›ƒè›…è›‘è›’è›•è›—è›šè›œè› è›Łè›„è›§èšˆè›șè›Œè›œèœ„èœ…èœ‡èœ‹èœŽèœèœèœ“èœ”èœ™èœžèœŸèœĄèœŁ"], -["8fdba1","èœšèœźèœŻèœ±èœČèœčèœșèœŒèœœèœŸè€èƒè…èè˜èèĄè€è„èŻè±èČ蝻螃",6,"èž‹èžŒèžèž“èž•èž—èž˜èž™èžžèž èžŁèž§èžŹèž­èžźèž±èž”èžŸèžżèŸèŸˆèŸ‰èŸŠèŸŽèŸ•èŸ–èŸ™èŸšèŸœèŸŸèŸąèŸŁèŸ€èŸȘèŸ«èŸ­èŸ±èŸłèŸžèŸșèŸżè è ƒè †è ‰è Šè ‹è è ™è ’è “è ”è ˜è šè ›è œè žè Ÿè šè ­è źè °è Čè ”"], -["8fdca1","è șè ŒèĄèĄƒèĄ…èĄˆèĄ‰èĄŠèĄ‹èĄŽèĄ‘èĄ•èĄ–èĄ˜èĄšèĄœèĄŸèĄ èĄ€èĄ©èĄ±èĄčèĄ»èą€èą˜èąšèą›èąœèąŸèą èąšèąȘèąșèąœèąŸèŁ€èŁŠ",4,"èŁ‘èŁ’èŁ“èŁ›èŁžèŁ§èŁŻèŁ°èŁ±èŁ”èŁ·è€è€†è€è€Žè€è€•è€–è€˜è€™è€šè€œè€ è€Šè€§è€šè€°è€±è€Č耔è€čè€șè€Ÿè„€è„‚è„…è„†è„‰è„è„’è„—è„šè„›è„œè„Ąè„ąè„Łè„«è„źè„°è„łè„”è„ș"], -["8fdda1","脻脌脜芉芍芐芔芕芛芜芟芠芄芰芎芔芶芷芌觔",4,"è§„è§©è§«è§­è§±è§łè§¶è§čè§œè§żèš„èš…èš‡èšèš‘èš’èš”èš•èšžèš èšąèš€èšŠèš«èšŹèšŻèš”èš·èšœèšŸè©€è©ƒè©…è©‡è©‰è©è©Žè©“è©–è©—è©˜è©œè©è©Ąè©„è©§è©”è©¶è©·è©čè©șè©»è©Ÿè©żèȘ€èȘƒèȘ†èȘ‹èȘèȘèȘ’èȘ–èȘ—èȘ™èȘŸèȘ§èȘ©èȘźèȘŻèȘł"], -["8fdea1","èȘ¶èȘ·èȘ»èȘŸè«ƒè«†è«ˆè«‰è«Šè«‘è«“è«”è«•è«—è«è«Ÿè«Źè«°è«Žè«”è«¶è«Œè«żèŹ…èŹ†èŹ‹èŹ‘èŹœèŹžèŹŸèŹŠèŹ­èŹ°èŹ·èŹŒè­‚",4,"è­ˆè­’è­“è­”è­™è­è­žè­Łè­­è­¶è­žè­čè­Œè­Ÿèźèź„èź…èź‹èźèźèź”èź•èźœèźžèźŸè°žè°čè°œè°Ÿè±…è±‡è±‰è±‹è±è±‘è±“è±”è±—è±˜è±›è±è±™è±Łè±€è±Šè±šè±©è±­è±łè±”è±¶è±»è±ŸèȆ"], -["8fdfa1","èȇèȋèȐèȒèȓèșèțèȜèČ€èČčèČșèł…èł†èł‰èł‹èłèł–èł•èł™èłèłĄèłšèłŹèłŻèł°èłČèł”èł·èłžèłŸèłżèŽèŽƒèŽ‰èŽ’èŽ—èŽ›è”„è”©è”Źè”źè”żè¶‚è¶„è¶ˆè¶è¶è¶‘è¶•è¶žè¶Ÿè¶ è¶Šè¶«è¶Źè¶Żè¶Č趔趷è¶čè¶»è·€è·…è·†è·‡è·ˆè·Šè·Žè·‘è·”è·•è·—è·™è·€è·„è·§è·Źè·°è¶Œè·±è·Čè·Žè·œèžèž„èž…èž†èž‹èž‘èž”èž–èž èžĄèžą"], -["8fe0a1","èžŁèžŠèž§èž±èžłèž¶èž·èžžèžčèžœèč€èčèč‹èčèčŽèčèč”èč›èčœèčèčžèčĄèčąèč©èčŹèč­èčŻèč°èč±èččèčșèč»èș‚èșƒèș‰èșèș’èș•èșšèș›èșèșžèșąèș§èș©èș­èșźèșłèș”èșșèș»è»€è»è»ƒè»„è»‡è»è»‘è»”è»œè»šè»źè»°è»±è»·è»čè»șè»­èŒ€èŒ‚èŒ‡èŒˆèŒèŒèŒ–èŒ—èŒ˜èŒžèŒ èŒĄèŒŁèŒ„èŒ§èŒšèŒŹèŒ­èŒźèŒŽèŒ”èŒ¶èŒ·èŒș蜀蜁"], -["8fe1a1","蜃蜇蜏蜑",4,"èœ˜èœèœžèœ„èŸèŸ èŸĄèŸ€èŸ„èŸŠèŸ”èŸ¶èŸžèŸŸèż€èżèż†èżŠèż‹èżèżèż’èż“èż•èż èżŁèż€èżšèżźèż±èż”èż¶èż»èżŸé€‚é€„é€ˆé€Œé€˜é€›é€šé€©é€Żé€Șé€Źé€­é€łé€Žé€·é€żéƒé„éŒé›ééąéŠé§éŹé°éŽéčé‚…é‚ˆé‚‹é‚Œé‚Žé‚é‚•é‚—é‚˜é‚™é‚›é‚ é‚Ąé‚ąé‚„é‚°é‚Čé‚łé‚Žé‚¶é‚œéƒŒé‚Ÿéƒƒ"], -["8fe2a1","éƒ„éƒ…éƒ‡éƒˆéƒ•éƒ—éƒ˜éƒ™éƒœéƒéƒŸéƒ„éƒ’éƒ¶éƒ«éƒŻéƒ°éƒŽéƒŸéƒżé„€é„„é„…é„†é„ˆé„é„é„”é„–é„—é„˜é„šé„œé„žé„ é„„é„ąé„Łé„§é„©é„źé„Żé„±é„Žé„¶é„·é„čé„șé„Œé„œé…ƒé…‡é…ˆé…é…“é…—é…™é…šé…›é…Ąé…€é…§é…­é…Žé…čé…șé…»é†é†ƒé†…é††é†Šé†Žé†‘é†“é†”é†•é†˜é†žé†Ąé†Šé†šé†Źé†­é†źé†°é†±é†Čé†łé†¶é†»é†Œé†œé†ż"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釀釄釩é‡Ș釬",5,"釷é‡čé‡»é‡œéˆ€éˆéˆ„éˆ…éˆ†éˆ‡éˆ‰éˆŠéˆŒéˆéˆ’éˆ“éˆ–éˆ˜éˆœéˆéˆŁéˆ€éˆ„éˆŠéˆšéˆźéˆŻéˆ°éˆłéˆ”éˆ¶éˆžéˆčéˆșéˆŒéˆŸé‰€é‰‚é‰ƒé‰†é‰‡é‰Šé‰é‰Žé‰é‰‘é‰˜é‰™é‰œé‰é‰ é‰Ąé‰„é‰§é‰šé‰©é‰źé‰Żé‰°é‰”",4,"é‰»é‰Œé‰œé‰żéŠˆéŠ‰éŠŠéŠéŠŽéŠ’éŠ—"], -["8fe4a1","éŠ™éŠŸéŠ éŠ€éŠ„éŠ§éŠšéŠ«éŠŻéŠČ銶銞éŠșéŠ»éŠŒéŠœéŠż",4,"é‹…é‹†é‹‡é‹ˆé‹‹é‹Œé‹é‹Žé‹é‹“é‹•é‹—é‹˜é‹™é‹œé‹é‹Ÿé‹ é‹Ąé‹Łé‹„é‹§é‹šé‹Źé‹źé‹°é‹čé‹»é‹żéŒ€éŒ‚éŒˆéŒéŒ‘éŒ”éŒ•éŒœéŒéŒžéŒŸéŒĄéŒ€éŒ„éŒ§éŒ©éŒȘéŒłéŒŽéŒ¶éŒ·é‡éˆé‰éé‘é’é•é—é˜éšéžé€é„é§é©éȘé­éŻé°é±éłéŽé¶"], -["8fe5a1","éșéœéżéŽ€éŽéŽ‚éŽˆéŽŠéŽ‹éŽéŽéŽ’éŽ•éŽ˜éŽ›éŽžéŽĄéŽŁéŽ€éŽŠéŽšéŽ«éŽŽéŽ”éŽ¶éŽș鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏱鏩鏧éč鏷鏞éșé»éœéé‚é„éˆé‰ééŽéé•é–é—éŸéźéŻé±éČéłéŽé»éżéœé‘ƒé‘…é‘ˆé‘Šé‘Œé‘•é‘™é‘œé‘Ÿé‘Ąé‘Łé‘šé‘«é‘­é‘źé‘Żé‘±é‘Č钄钃镾é•č"], -["8fe6a1","é•Ÿé–„é–ˆé–Œé–é–Žé–é–žé–Ÿé–Ąé–Šé–©é–«é–Źé–Žé–¶é–șé–œé–żé—†é—ˆé—‰é—‹é—é—‘é—’é—“é—™é—šé—é—žé—Ÿé— é—€é—Šé˜é˜žé˜ąé˜€é˜„é˜Šé˜Źé˜±é˜łé˜·é˜žé˜čé˜șé˜Œé˜œé™é™’é™”é™–é™—é™˜é™Ąé™źé™Žé™»é™Œé™Ÿé™żéšéš‚éšƒéš„éš‰éš‘éš–éššéšéšŸéš€éš„éšŠéš©éšźéšŻéšłéšș雊雒ć¶Čé›˜é›šé›é›žé›Ÿé›©é›Żé›±é›ș霂"], -["8fe7a1","éœƒéœ…éœ‰éœšéœ›éœéœĄéœąéœŁéœšéœ±éœłééƒéŠéŽéé•é—é˜éšé›éŁé§éȘéźéłé¶é·éžé»éœéżéž€éž‰éž•éž–éž—éž™éžšéžžéžŸéžąéžŹéžźéž±éžČ鞔鞶鞞éžčéžșéžŒéžŸéžżéŸéŸ„éŸ…éŸ‡éŸ‰éŸŠéŸŒéŸéŸŽéŸéŸ‘éŸ”éŸ—éŸ˜éŸ™éŸéŸžéŸ éŸ›éŸĄéŸ€éŸŻéŸ±éŸŽéŸ·éŸžéŸș頇頊頙頍頎頔頖頜頞頠頣頩"], -["8fe8a1","é «é źé Żé °é Čé łé ”é „é ŸéĄ„éĄ‡éĄŠéĄ‘éĄ’éĄ“éĄ–éĄ—éĄ™éĄšéĄąéĄŁéĄ„éĄŠéĄȘ饏鹫鹭鹟鹰鹎鹷鹞éąșéą»éążéŁ‚éŁ…éŁˆéŁŒéŁĄéŁŁéŁ„éŁŠéŁ§éŁȘéŁłéŁ¶é€‚é€‡é€ˆé€‘é€•é€–é€—é€šé€›é€œé€Ÿé€ąé€Šé€§é€«é€±",4,"é€čé€ș逻逌鄀鄁鄆鄇鄈鄍鄎鄔鄘鄙鄛鄜鄞鄟鄠銛銝銟銊銰銱éŠČ銔"], -["8fe9a1","éŠčéŠșéŠœéŠżé§ƒé§‰é§“é§”é§™é§šé§œé§žé§§é§Șé§«é§Źé§°é§Žé§”é§čé§œé§Ÿéš‚éšƒéš„éš‹éšŒéšéš‘éš–éšžéš éšąéšŁéš€éš§éš­éšźéšłéš”éš¶éšžé©‡é©é©„é©Šé©‹é©Œé©Žé©‘é©”é©–é©éȘȘéȘŹéȘźéȘŻéȘČéȘŽéȘ”éȘ¶éȘčéȘ»éȘŸéȘżé«é«ƒé«†é«ˆé«Žé«é«’髕髖髗髛髜髠髀髄髧髩髏é«Č髳體é«čé«șé«œé«ż",4], -["8feaa1","éŹ„éŹ…éŹˆéŹ‰éŹ‹éŹŒéŹéŹŽéŹéŹ’éŹ–éŹ™éŹ›éŹœéŹ éŹŠéŹ«éŹ­éŹłéŹŽéŹ”éŹ·éŹčéŹșéŹœé­ˆé­‹é­Œé­•é­–é­—é­›é­žé­Ąé­Łé­„é­Šé­šé­Ș",4,"魳魔魷魞é­čé­żéź€éź„éź…éź†éź‡éź‰éźŠéź‹éźéźéźéź”éźšéźéźžéźŠéź§éź©éźŹéź°éź±éźČéź·éźžéź»éźŒéźŸéźżéŻéŻ‡éŻˆéŻŽéŻéŻ—éŻ˜éŻéŻŸéŻ„éŻ§éŻȘ鯫鯯鯳鯷鯞"], -["8feba1","éŻčéŻșéŻœéŻżé°€é°‚é°‹é°é°‘é°–é°˜é°™é°šé°œé°žé°ąé°Łé°Š",4,"é°±é°”é°¶é°·é°œé±é±ƒé±„é±…é±‰é±Šé±Žé±é±é±“é±”é±–é±˜é±›é±é±žé±Ÿé±Łé±©é±Șé±œé±«é±šé±źé±°é±Č鱔鱷鱻鳊éłČéł·éłč鮋鮂鮑鮗鮘鮜鮝鮞鮯鮰éŽČ鎳鎎éŽșéŽŒé”…éŽœé”‚é”ƒé”‡é”Šé”“é””é”Ÿé”Łé”ąé”„é”©é”Ș锫锰锶锷锻"], -["8feca1","é”Œé”Ÿé¶ƒé¶„é¶†é¶Šé¶é¶Žé¶’é¶“é¶•é¶–é¶—é¶˜é¶Ąé¶Ș鶏鶟鶱鶔é¶čé¶Œé¶żé·ƒé·‡é·‰é·Šé·”é·•é·–é·—é·šé·žé·Ÿé· é·„é·§é·©é·«é·źé·°é·łé·Žé·ŸéžŠéž‚éž‡éžŽéžéž‘éž’éž•éž–éž™éžœéžéčșéč»éčŒéș€éș‚éșƒéș„éș…éș‡éșŽéșéș–éș˜éș›éșžéș€éșšéșŹéșźéșŻéș°éșłéșŽéș”é»†é»ˆé»‹é»•é»Ÿé»€é»§é»Źé»­é»źé»°é»±é»Čé»”"], -["8feda1","é»žé»żéŒ‚éŒƒéŒ‰éŒéŒéŒ‘éŒ’éŒ”éŒ–éŒ—éŒ™éŒšéŒ›éŒŸéŒąéŒŠéŒȘéŒ«éŒŻéŒ±éŒČ錎錷éŒčéŒșéŒŒéŒœéŒżéœéœƒ",4,"霓霕霖霗霘霚霝霞霚霩霭",4,"éœłéœ”éœșéœœéŸéŸéŸ‘éŸ’éŸ”éŸ–éŸ—éŸžéŸĄéŸąéŸŁéŸ„"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json deleted file mode 100644 index 85c6934..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +++ /dev/null @@ -1 +0,0 @@ -{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gbk-added.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gbk-added.json deleted file mode 100644 index b742e36..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ /dev/null @@ -1,56 +0,0 @@ -[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","î•„",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","îČ",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc","ážż"], -["a8bf","Çč"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","ă€Ÿâż°",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","âșî –î —î ˜âș„㑳㑇âșˆâș‹î žă–žă˜šă˜ŽâșŒâș—ă„źă€˜î Šă§ă§Ÿă©łă§î «î Źă­Žă±źăł âș§î ±î ČâșȘ䁖䅟âșźäŒ·âșłâș¶âș·î »äŽ±äŽŹâș»ää“–ä™Ąä™ŒîĄƒ"], -["fe80","äœŁäœ©äŒäžâ»Šä„‡ä„șä„œäŠ‚äŠƒäŠ…äŠ†äŠŸäŠ›äŠ·äŠ¶îĄ”îĄ•äČŁäȟäČ äČĄä±·äȱ䮓",6,"䶟",93], -["8135f437",""] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/shiftjis.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/shiftjis.json deleted file mode 100644 index 5a3a43c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/tables/shiftjis.json +++ /dev/null @@ -1,125 +0,0 @@ -[ -["0","\u0000",128], -["a1","ïœĄ",62], -["8140","ă€€ă€ă€‚ïŒŒïŒŽăƒ»ïŒšïŒ›ïŒŸïŒă‚›ă‚œÂŽïœ€ÂšïŒŸïżŁïŒżăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒâ€•â€ïŒïŒŒïœžâˆ„ïœœâ€Šâ€„â€˜â€™â€œâ€ïŒˆïŒ‰ă€”ă€•ïŒ»ïŒœïœ›ïœă€ˆ",9,"ïŒ‹ïŒÂ±Ă—"], -["8180","Ă·ïŒâ‰ ïŒœïŒžâ‰Šâ‰§âˆžâˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïż„ïŒ„ïż ïżĄïŒ…ïŒƒïŒ†ïŒŠïŒ Â§â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Čâ–œâ–Œâ€»ă€’â†’â†â†‘â†“ă€“"], -["81b8","∈∋⊆⊇⊂⊃âˆȘ∩"], -["81c8","âˆ§âˆšïżąâ‡’â‡”âˆ€âˆƒ"], -["81da","âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹ"], -["81f0","ʼn♯♭â™Ș†‥¶"], -["81fc","◯"], -["824f","",9], -["8260","ïŒĄ",25], -["8281","",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"ÎŁ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","ĐŸ",17], -["849f","â”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚"], -["8740","①",19,"Ⅰ",9], -["875f","ă‰ăŒ”ăŒąăăŒ˜ăŒ§ăŒƒăŒ¶ă‘ă—ăŒăŒŠăŒŁăŒ«ăŠăŒ»ăŽœăŽăŽžăŽŽăŽă„ăŽĄ"], -["877e","ă»"], -["8780","ă€ă€Ÿâ„–ăâ„ĄăŠ€",4,"㈱ăˆČăˆčăŸăœăŒâ‰’â‰Ąâˆ«âˆźâˆ‘âˆšâŠ„âˆ âˆŸâŠżâˆ”âˆ©âˆȘ"], -["889f","äșœć”–ćšƒé˜żć“€æ„›æŒšć§¶é€ąè‘”茜穐æ‚ȘæĄæž„æ—­è‘ŠèŠŠéŻ”æą“ćœ§æ–Ąæ‰±ćź›ć§è™»éŁŽç”ąç¶ŸéźŽæˆ–çČŸèą·ćź‰ćș”æŒ‰æš—æĄˆé—‡éžæä»„äŒŠäœäŸć‰ć›Čć€·ć§”ćšć°‰æƒŸæ„æ…°æ˜“æ€…ç‚șç•ç•°ç§»ç¶­ç·ŻèƒƒèŽèĄŁèŹ‚é•éș㌻äș•äș„㟟è‚ČéƒçŁŻäž€ćŁ±æșąé€žçšČèŒšèŠ‹é°Żć…ć°ć’œć“Ąć› ć§»ćŒ•éŁČ淫胀蔭"], -["8940","é™ąé™°éš éŸ»ć‹ćłćź‡çƒçŸœèż‚é›šćŻé”œçȘșäž‘çą“è‡ŒæžŠć˜˜ć”„æŹè”šé°»ć§„ćŽ©æ”Šç“œé–ć™‚äș‘運é›Čèé€ŒćĄć–¶ćŹ°ćœ±æ˜ æ›łæ „æ°žæłłæŽ©ç‘›ç›ˆç©Žé Žè‹±èĄ›è© é‹­æ¶Čç–«ç›Šé§…æ‚ŠèŹè¶Šé–ČæŠŽćŽ­ć††"], -["8980","ćœ’ć °ć„„ćźŽć»¶æ€šæŽ©æŽæČżæŒ”ç‚Žç„”ç…™ç‡•çŒżçžè‰¶è‹‘è–—é é‰›éŽ›ćĄ©æ–Œæ±šç”„ć‡čć€źć„„ćŸ€ćżœæŠŒæ—șæšȘæŹ§æźŽçŽ‹çżè„–éŽŹéŽŽé»„ćČĄæČ–è»ć„„ć±‹æ†¶è‡†æĄ¶ç‰Ąäč™äżșćžæ©æž©ç©éŸłäž‹ćŒ–ä»źäœ•äŒœäŸĄäœłćŠ ćŻć˜‰ć€ć«ćź¶ćŻĄç§‘æš‡æžœæž¶æ­ŒæČłç«ç‚çŠçŠŸçšŒçź‡èŠ±è‹›èŒ„è·èŻè“èŠèȘČ昩èČšèżŠéŽéœžèšŠäż„ćłšæˆ‘ç‰™ç”»è‡„èŠœè›Ÿèł€é›…é€“é§•ä»‹äŒšè§Łć›žćĄŠćŁŠć»»ćż«æ€Șæ‚”æąæ‡æˆ’æ‹æ”č"], -["8a40","é­æ™Šæą°æ”·ç°ç•Œçš†ç””èŠ„èŸč開階èČć‡±ćŠŸć€–ć’łćźłćŽ–æ…šæŠ‚æ¶Żçąè“‹èĄ—è©Č鎧éȘžæ”ŹéŠšè›™ćžŁæŸżè›ŽéˆŽćŠƒćš‡ć„ć»“æ‹Ąæ’čæ Œæ žæź»çČçąșç©«èŠšè§’è”«èŒƒéƒ­é–Łéš”é©ć­ŠćČłæ„œéĄéĄŽæŽ›çŹ æš«"], -["8a80","æ©żæą¶é°æœŸć‰Čć–æ°æ‹ŹæŽ»æž‡æ»‘è‘›è€èœ„äž”é°čć¶æ€›æšș鞄æ Șć…œç«ƒè’Čé‡œéŽŒć™›éŽšæ ąèŒ…è±çČ„ćˆˆè‹…ç“ŠäčŸäŸƒć† ćŻ’ćˆŠć‹˜ć‹§ć·»ć–šć Ș槩漌漘毛ćčČćč迂ٿ„Ÿæ…Łæ†Ÿæ›æ•ąæŸ‘æĄ“æŁșæŹŸæ­“æ±—æŒąæŸ—æœ…ç’°ç”˜ç›Łçœ‹ç«żçźĄç°Ąç·©çŒ¶çż°è‚è‰ŠèŽžèŠłè«ŒèČ«é‚„é‘‘é–“é–‘é–ąé™„éŸ“é€šèˆ˜äžžć«ćČžć·ŒçŽ©ç™ŒçœŒćČ©çż«èŽ‹é›é ‘éĄ”éĄ˜äŒäŒŽć±ć–œć™šćŸș愇揉毄ćȐ澌ćčŸćżŒæźæœșæ——æ—ąæœŸæŁ‹æŁ„"], -["8b40","æ©Ÿćž°æŻ…æ°—æ±œç•żç„ˆć­Łçš€çŽ€ćŸœèŠèš˜èČŽè”·è»ŒèŒéŁąéšŽéŹŒäș€ćœć„€ćŠ“ćźœæˆŻæŠ€æ“ŹæŹș犠疑焇矩蟻èȘŒè­°æŽŹèŠéž ć‰ćƒć–«æĄ”æ©˜è©°ç §æ”é»ćŽćźąè„šè™é€†äž˜äč…ä»‡äŒ‘ćŠćžćźźćŒ“æ€„救"], -["8b80","朜求æ±ČæłŁçžçƒç©¶çȘźçŹˆçŽšçłŸç”Šæ—§ç‰›ćŽ»ć±…ć·šæ‹’æ‹ æŒ™æž è™šèš±è·é‹žæŒçŠŠé­šäșšäș«äșŹäŸ›äŸ ćƒ‘ć…‡ç«¶ć…±ć‡¶ć”ćŒĄćżć«ć–ŹćąƒćłĄćŒ·ćœŠæ€Żææ­æŒŸæ•™æ©‹æłç‹‚ç‹­çŸŻèƒžè„…èˆˆè•Žéƒ·éĄéŸżé„—é©šä»°ć‡ć°­æšæ„­ć±€æ›Čæ„”çŽ‰æĄçČćƒ…ć‹€ć‡ć·ŸéŒŠæ–€æŹŁæŹœçŽçŠçŠœç­‹ç·ŠèŠčèŒèĄżè„ŸèŹčèż‘é‡‘ćŸéŠ€äčć€¶ć„ćŒș狗玖矩苊èșŻé§†é§ˆé§’ć…·æ„šè™žć–°ç©ș恶毓遇隅äžČæ«›é‡§ć±‘ć±ˆ"], -["8c40","掘çȘŸæČ“éŽèœĄçȘȘ熊隈çČ‚æ —çč°æĄ‘鍬ć‹Čć›è–«èš“çŸ€è»éƒĄćŠèąˆç„äż‚ć‚Ÿćˆ‘ć…„ć•“ćœ­çȘćž‹ć„‘ćœąćŸ„æ”æ…¶æ…§æ†©æŽČæșæ•Źæ™ŻæĄ‚æž“ç•Šçšœçł»ç”Œç¶™çč‹çœ«èŒŽèŠè›èšˆè©Łè­Šè»œé šé¶èŠžèżŽéŻš"], -["8c80","ćŠ‡æˆŸæ’ƒæż€éš™æĄć‚‘æŹ æ±șæœ”ç©Žç”èĄ€èšŁæœˆä»¶ć€čć€Šć„ć…Œćˆžć‰Łć–§ćœć …ć«Œć»șæ†Čæ‡žæ‹łæČæ€œæš©ç‰œçŠŹçŒźç ”çĄŻç”čçœŒè‚©èŠ‹èŹ™èłąè»’éŁé”é™ș顕鹓éčžć…ƒćŽŸćŽłćč»ćŒŠæž›æșçŽ„çŸç”ƒèˆ·èš€è«ș限äčŽć€‹ć€ć‘Œć›ș槑歀深ćș«ćŒ§æˆžæ•…æžŻæč–ç‹çłŠèąŽè‚ĄèƒĄè°è™ŽèȘ‡è·šéˆ·é›‡éĄ§éŒ“äș”äș’äŒćˆć‘‰ćŸćšŻćŸŒćŸĄæ‚Ÿæą§æȘŽç‘šçąèȘžèȘ€è­·é†äčžé݉äș€äœŒäŸŻć€™ć€–ć…‰ć…ŹćŠŸćŠčć‹ŸćŽšćŁć‘"], -["8d40","ćŽć–‰ć‘ćžąć„œć­”ć­ćźć·„ć·§ć··ćčžćșƒćșšćș·ćŒ˜æ’æ…ŒæŠ—æ‹˜æŽ§æ”»æ˜‚æ™ƒæ›Žæ­æ Ąæą—æ§‹æ±ŸæŽȘæ”©æžŻæșç”Čçš‡çĄŹçšżçł çŽ…çŽ˜ç”žç¶±è€•è€ƒè‚Żè‚±è…”è†èˆȘè’èĄŒèĄĄèŹ›èČąèłŒéƒŠé…”é‰±ç żé‹Œé–€é™"], -["8d80","é …éŠ™é«˜éŽ»ć‰›ćŠ«ć·ćˆćŁ•æ‹·æż è±Ș蜟éșčć…‹ćˆ»ć‘Šć›œç©€é…·é” é»’ç„æŒ‰è…°ç”‘ćżœæƒšéȘšç‹›èŸŒæ­€é ƒä»Šć›°ć€ćąŸć©šæšæ‡‡æ˜æ˜†æ čæą±æ··ç—•çŽșè‰źé­‚äș›äœć‰ć”†ć”Żć·Šć·źæŸ»æČ™ç‘łç ‚è©éŽ–èŁŸććș§æŒ«ć‚”ć‚Źć†æœ€ć“‰ćĄžćŠ»ćź°ćœ©æ‰æŽĄæ œæ­łæžˆçœé‡‡çŠ€ç •ç Šç„­æ–ŽçŽ°èœèŁèŒ‰éš›ć‰€ćœšæçœȘèȡ憮杂é˜Șć ș把肎ć’ČćŽŽćŸŒçą•é·șäœœć‰Šć’‹æŸæ˜šæœ”æŸ”çȘ„ç­–çŽąéŒŻæĄœéź­çŹčćŒ™ć†Šćˆ·"], -["8e40","ćŻŸæ‹¶æ’źæ“Šæœ­æźșè–©é›‘çšéŻ–æŒéŒ†éź«çšżæ™’äž‰ć‚˜ć‚ć±±æƒšæ’’æ•ŁæĄŸç‡ŠçŠç”Łçź—çș‚èš•èźƒèł›é…žé€æ–Źæš«æź‹ä»•ä»”äŒșäœżćˆș揾ćČć—Łć››ćŁ«ć§‹ć§‰ć§żć­ć±ćž‚ćž«ćż—æ€æŒ‡æ”Żć­œæ–Żæ–œæ—šæžæ­ą"], -["8e80","æ­»æ°ç…ç„‰ç§çłžçŽ™çŽ«è‚ąè„‚è‡łèŠ–è©žè©©è©ŠèȘŒè«źèł‡èłœé›ŒéŁŒæ­Żäș‹äŒŒäŸć…ć­—ćŻșæ…ˆæŒæ™‚æŹĄæ»‹æČ»çˆŸç’œç—”çفç€șè€Œè€łè‡Ș蒔蟞汐éčżćŒè­˜éŽ«ç«șè»žćźé›«äžƒć±ćŸ·ć€±ć«‰ćź€æ‚‰æčżæŒ†ç–ŸèłȘćźŸè”€çŻ ćČæŸŽèŠć±Ąè•ŠçžžèˆŽć†™ć°„æšè”Šæ–œç…źç€ŸçŽ—è€…èŹè»Šéźè›‡é‚Ș怟ć‹șć°șæ“çŒçˆ”é…Œé‡ˆéŒ«è‹„ćŻ‚ćŒ±æƒčäž»ć–ćźˆæ‰‹æœ±æźŠç‹©ç çšźè…«è¶Łé…’éŠ–ć„’ć—ć‘ȘćŻżæŽˆæščç¶Źéœ€ć›šćŽć‘š"], -["8f40","ćź—ć°±ć·žäżźæ„æ‹ŸæŽČ秀秋甂çčçż’è‡­èˆŸè’èĄ†è„ČèźèčŽèŒŻé€±é…‹é…Źé›†é†œä»€äœć……ććŸ“æˆŽæŸ”æ±æž‹çŁçžŠé‡éŠƒć”ć€™ćźżæ·‘ç„çžźçČ›ćĄŸç†Ÿć‡șèĄ“èż°äżŠćł»æ˜„çžŹç«Łèˆœé§żć‡†ćŸȘæ—Źæ„Żæź‰æ·ł"], -["8f80","æș–æœ€ç›ŸçŽ”ć·Ąé”é†‡é †ć‡Šćˆæ‰€æš‘æ›™æžšćș¶ç·’çœČæ›žè–Żè—·è«žćŠ©ć™ć„łćșćŸæ•é‹€é™€ć‚·ć„Ÿć‹ćŒ ć‡ćŹć“šć•†ć”±ć˜—ć„šćŠŸćšŒćź”ć°†ć°ć°‘ć°šćș„ćșŠć» ćœ°æ‰żæŠ„æ‹›æŽŒæ·æ˜‡æ˜Œæ˜­æ™¶æŸæąąæšŸæš”æČŒæ¶ˆæž‰æč˜ç„Œç„Šç…§ç—‡çœçĄç€ç„„称章珑çȧçŽčè‚–è–è’‹è•‰èĄèŁłèšŸèšŒè©”è©łè±Ąèłžé†€é‰ŠéŸé˜éšœéž˜äžŠäžˆäžžäč—ć†—ć‰°ćŸŽć ŽćŁŒćŹąćžžæƒ…æ“ŸæĄæ–æ”„çŠ¶ç•łç©Łè’žè­Čé†žéŒ ć˜±ćŸŽéŁŸ"], -["9040","æ‹­æ€æź–ç‡­çč”職è‰Čè§ŠéŁŸè•èŸ±ć°»äŒžäżĄäŸ”ć”‡ćš ćŻćŻ©ćżƒæ…ŽæŒŻæ–°æ™‹æŁźæŠ›æ”žæ·±ç”łç–čçœŸç„žç§ŠçŽłè‡ŁèŠŻè–ȘèŠȘèšșèș«èŸ›é€Č針震äșșä»ćˆƒćĄ”ćŁŹć°‹ç”šć°œè…ŽèšŠèż…é™Łé­çŹ„è«é ˆé…ąć›łćŽš"], -["9080","逗ćčćž‚ćž„æŽšæ°Žç‚ŠçĄçČ‹çż èĄ°é‚é…”éŒéŒ˜éšç‘žé«„ćŽ‡ć”©æ•°æžąè¶šé››æźæ‰æ€™è…é —é›€èŁŸæŸ„æ‘șćŻžäž–ç€Źç•æ˜Żć‡„ćˆ¶ć‹ąć§“ćŸæ€§æˆæ”żæ•Žæ˜Ÿæ™ŽæŁČæ –æ­Łæž…ç‰Č生盛çČŸè–ćŁ°èŁœè„żèȘ èȘ“è«‹é€é†’é’é™æ–‰çšŽè„†éš»ćž­æƒœæˆšæ–„æ˜”æžçŸłç©ç±çžŸè„ŠèČŹè”€è·ĄèčŸçą©ćˆ‡æ‹™æŽ„摂折蚭çȘƒçŻ€èȘŹé›Șç”¶èˆŒè‰ä»™ć…ˆćƒć ćźŁć°‚ć°–ć·æˆŠæ‰‡æ’°æ “æ Žæł‰æ”…æŽ—æŸ“æœœç…Žç…œæ—‹ç©żçź­ç·š"], -["9140","çčŠçŸšè…ș舛èˆčè–Šè©źèłŽè·”éžé·éŠ­éŠ‘é–ƒéźźć‰ć–„æŒžç„¶ć…šçŠ…çč•è†łçłŽć™ŒćĄ‘ćČšæŽȘ曟曜愚狙疏疎瀎焖租çČ—çŽ ç”„è˜‡èšŽé˜»éĄéŒ ćƒ§ć‰”ćŒćąć€‰ć–ȘćŁźć„çˆœćź‹ć±€ćŒæƒŁæƒłæœæŽƒæŒżæŽ»"], -["9180","操早æ›čć·Łæ§æ§œæŒ•ç‡„äș‰ç—©ç›žçȘ“çłŸç·ç¶œèĄè‰è˜è‘Źè’Œè—»èŁ…è”°é€é­éŽ—éœœéš’ćƒćą—æ†Žè‡“è””èŽˆé€ äżƒćŽć‰‡ćłæŻæ‰æŸæžŹè¶łé€Ÿäż—ć±žèłŠæ—ç¶šć’èą–ć…¶æƒć­˜ć­«ć°Šææ‘éœä»–ć€šć€Șæ±°è©‘ć”Ÿć •ćŠ„æƒ°æ‰“æŸèˆ”æ„•é™€é§„éššäœ“ć †ćŻŸè€ćČ±ćžŻćŸ…æ€ æ…‹æˆŽæ›żæł°æ»žèƒŽè…żè‹”èą‹èČžé€€é€źéšŠé»›éŻ›ä»Łć°ć€§çŹŹé†éĄŒé·čæ»ç€§ć“ć•„ćź…æ‰˜æŠžæ‹“æČąæżŻçąèš—éžæżè«ŸèŒžć‡§è›žćȘ"], -["9240","ć©äœ†é”èŸ°ć„Șè„±ć·œç«ȘèŸżæŁšè°·ç‹žé±ˆæšœèȘ°äžčć˜ć˜†ćŠæ‹…æŽąæ—Šæ­Žæ·Ąæč›ç‚­çŸ­ç«ŻçźȘ綻耜胆蛋èȘ•é›ć›ŁćŁ‡ćŒŸæ–­æš–æȘ€æź”ç”·è«‡ć€€çŸ„ćœ°ćŒ›æ„æ™șæ± ç—Žçššçœźè‡Žèœ˜é…éŠłçŻ‰ç•œç«č筑蓄"], -["9280","逐秩çȘ’èŒ¶ć«Ąç€äž­ä»Čćź™ćż æŠœæ˜ŒæŸ±æłšè™«èĄ·èš»é…Žé‹łé§æš—ç€ŠçŒȘ苧著èȯ䞁慆懋斋比枖枳ćșćŒ”ćŒ”ćœ«ćŸŽæ‡ČæŒ‘æšąæœæœźç‰’ç”șçœș聎è„č腞蝶èȘżè«œè¶…è·łéŠšé•·é ‚éł„ć‹…æ—ç›Žæœ•æČˆçèłƒéŽźé™łæŽ„ćąœæ€Žæ§ŒèżœéŽšç—›é€šćĄšæ ‚æŽŽæ§»äœƒæŒŹæŸ˜èŸ»è”Šç¶Žé”æ€żæœ°ćȘ棷描玏çˆȘ搊釣鶎äș­äœŽćœć”扃èČžć‘ˆć €ćźšćžćș•ćș­ć»·ćŒŸæ‚ŒæŠ”æŒșææąŻæ±€çą‡çŠŽçš‹ç· è‰‡èš‚è«Šèč„逓"], -["9340","é‚žé„­é‡˜éŒŽæł„æ‘˜æ“ąæ•”æ»Žçš„çŹ›é©é‘æșșć“ČćŸčæ’€èœèż­é‰„ć…žćĄ«ć€©ć±•ćș—æ·»çșç”œèČŒè»ąéĄ›ç‚čäŒæźżæŸ±ç”°é›»ć…Žćć ”ćĄ—ćŠŹć± ćŸ’æ–—æœæžĄç™»èŸèł­é€”éƒœéç „ç șćŠȘćșŠćœŸć„Žæ€’怒慚憏"], -["9380","ć‡ćˆ€ć”ćĄ”ćĄ˜ć„—ćź•ćł¶ć¶‹æ‚ŒæŠ•æ­æ±æĄƒæąŒæŁŸç›—æ·˜æčŻæ¶›çŻç‡ˆćœ“ç—˜ç„·ç­‰ç­”ç­’çł–ç”±ćˆ°è‘Łè•©è—€èšŽèŹ„è±†èžé€ƒé€é™é™¶é ­éš°é—˜ćƒć‹•ćŒć ‚ć°Žæ†§æ’žæŽžçžłç«„èƒŽè„é“éŠ…ćł éŽ‡ćŒżćŸ—ćŸłæ¶œç‰čçŁçŠżçŻ€æŻ’ç‹ŹèȘ­æ ƒæ©Ąć‡žçȘæ€Žć±Šéł¶è‹«ćŻ…é…‰ç€žć™žć±Żæƒ‡æ•ŠæČŒè±šéé “ć‘‘æ›‡éˆć„ˆé‚Łć†…äčć‡Șè–™èŹŽç˜æșé‹æ„ąéŠŽçž„ç•·ć—æ„ è»Ÿé›Łæ±äșŒć°ŒćŒèż©ćŒ‚èł‘è‚‰è™čć»żæ—„äčłć…„"], -["9440","ćŠ‚ć°żéŸźä»»ćŠŠćżèȘæżĄçŠ°ç„ąćŻ§è‘±çŒ«ç†±ćčŽćż”捻撚燃çȘäčƒć»Œäč‹ćŸœćšąæ‚©æżƒçŽèƒœè„łè†żèŸČèŠ—èš€ć·ŽæŠŠæ’­èŠ‡æ·æłąæŽŸç¶ç Žć©†çœ”èŠ­éŠŹäżłć»ƒæ‹æŽ’æ•—æŻç›ƒç‰ŒèƒŒè‚șèŒ©é…ć€ćŸčćȘ’æą…"], -["9480","æ„łç…€ç‹œèČ·ćŁČèł é™Șé€™èżç§€çŸ§è©äŒŻć‰„ćšæ‹æŸæłŠç™œçź”çČ•èˆ¶è–„èż«æ›æŒ çˆ†çž›èŽ«é§éșŠć‡œçź±çĄČçźžè‚‡ç­ˆæ«šćčĄè‚Œç•‘畠慫鉹æșŒç™ș醗é«ȘäŒçœ°æŠœç­é–„éł©ć™șćĄ™è›€éšŒäŒŽćˆ€ćŠćć›ćž†æŹæ–‘æżæ°Ÿæ±Žç‰ˆçŠŻç­ç•”çčèˆŹè—©èČ©çŻ„é‡†ç…©é ’éŁŻæŒœæ™©ç•Șç›€çŁè•ƒè›źćŒȘ捑搩橃ćș‡ćœŒæ‚Č扉æ‰čæŠ«æ–æŻ”æłŒç–Čçšźçą‘ç§˜ç·‹çœ·è‚„èą«èȘčèČ»éżéžéŁ›æš‹ç°žć‚™ć°ŸćŸźæž‡æŻ˜ç”çœ‰çŸŽ"], -["9540","錻柊皗ćŒčç–‹é«­ćœŠè†è±è‚˜ćŒŒćż…ç•ąç­†é€ŒæĄ§ć§«ćȘ›çŽç™ŸèŹŹäż”ćœȘæš™æ°·æŒ‚ç“ąç„šèĄšè©•è±čć»Ÿæç—…ç§’è‹—éŒšé‹Čè’œè›­é°­ć“ćœŹæ–Œæ”œç€•èČ§èł“é »æ•ç“¶äžä»˜ćŸ ć€«ć©ŠćŻŒć†šćžƒćșœæ€–扶敷"], -["9580","æ–§æ™źæ”źçˆ¶çŹŠè…è†šèŠ™è­œèČ èłŠè”Žé˜œé™„äŸźæ’«æ­Šèˆžè‘Ąè•Șéƒšć°æ„“éąšè‘șè•—äŒć‰ŻćŸ©ćč…æœçŠè…čè€‡èŠ†æ·”ćŒ—æ‰•æČžä»ç‰©éź’ćˆ†ć»ć™Žćąłæ†€æ‰źç„šć„źçČ‰çłžçŽ›é›°æ–‡èžäž™äœ”ć…”ćĄ€ćčŁćčłćŒŠæŸ„äžŠè”œé–‰é™›ç±łé ćƒ»ćŁç™–çą§ćˆ„çž„è”‘çź†ćć€‰ç‰‡çŻ‡ç·šèŸșèż”éäŸżć‹‰ćš©ćŒéž­äżèˆ—é‹Șćœƒæ•æ­©ç”«èŁœèŒ”ç©‚ć‹Ÿćą“æ…•æˆŠæšźæŻç°żè©ć€ŁäżžćŒ…ć‘†ć ±ć„‰ćźćł°ćłŻćŽ©ćș–抱捧攟æ–č朋"], -["9640","æł•æłĄçƒčç Čçž«èƒžèŠłèŒè“Źèœ‚è€’èšȘè±Šé‚Šé‹’éŁœéłłé”ŹäčäșĄć‚ć‰–ćŠćŠšćžœćż˜ćż™æˆżæšŽæœ›æŸæŁ’ć†’çŽĄè‚Șè†šèŹ€èȌèČżé‰Ÿé˜Č搠頬挗惕捜汹æ’ČæœŽç‰§çŠç©†é‡Šć‹ƒæČĄæź†ć €ćčŒć„”æœŹçż»ć‡Ąç›†"], -["9680","æ‘©çŁšé­”éș»ćŸ‹ćŠčæ˜§æžšæŻŽć“©æ§™ćč•膜枕éźȘæŸŸé±’æĄäșŠäżŁćˆæŠč末æČ«èż„䟭çč­éșżäž‡æ…ąæș€æŒ«è”“摳æœȘé­…ć·łçź•ćČŹćŻ†èœœæčŠè“‘çš”è„ˆćŠ™çČæ°‘çœ ć‹™ć€ąç„Ąç‰ŸçŸ›éœ§é”Ąæ€‹ć©żćš˜ć†„ćć‘œæ˜Žç›Ÿèż·éŠ˜éłŽć§Șç‰æ»…ć…æŁ‰ç¶żç·Źéąéșșæ‘žæšĄèŒ‚ćŠ„ć­ŸæŻ›çŒ›ç›Čç¶Č耗蒙ć„Čæœšé»™ç›źæąć‹żé€…ć°€æˆ»ç±ŸèČ°ć•æ‚¶çŽ‹é–€ćŒäčŸć†¶ć€œçˆșè€¶é‡ŽćŒ„çŸąćŽ„ćœčçŽ„è–Źèšłèșé–æŸłè–źé‘“æ„‰æ„ˆæČč癒"], -["9740","è«­èŒžć”Żäœ‘ć„Șć‹‡ć‹ćź„ćčœæ‚ æ†‚揖有柚æč§æ¶ŒçŒ¶çŒ·ç”±ç„èŁ•èȘ˜éŠé‚‘éƒ”é›„èžć€•äșˆäœ™äžŽèȘ‰èŒżé ć‚­ćčŒćŠ–ćźčćșžæšæș擁曜愊様掋æș¶ç†”甚çȘŻçŸŠè€€è‘‰è“‰èŠèŹĄèžŠé„é™œé€Šæ…ŸæŠ‘æŹČ"], -["9780","æČƒæ”ŽçżŒçżŒæ·€çŸ…èžșèŁžæ„èŽ±é Œé›·æŽ›ç”Ąèœé…Șäč±ć”ć”æŹ„æż«è—è˜­èŠ§ćˆ©ćć±„æŽæąšç†ç’ƒç—ąèŁèŁĄé‡Œé›ąé™žćŸ‹çŽ‡ç«‹è‘ŽæŽ ç•„ćŠ‰æ”æșœç‰ç•™çĄ«çČ’éš†ç«œéŸäŸ¶æ…źæ—…è™œäș†äșźćƒšäžĄć‡ŒćŻźæ–™æąæ¶ŒçŒŸç™‚çž­çšœçł§è‰Żè«’éŒé‡é™”é ˜ćŠ›ç·‘ć€«ćŽ˜æž—æ·‹ç‡çłè‡šèŒȘ隣鱗éșŸç‘ ćĄæ¶™çŽŻéĄžä»€äŒ¶äŸ‹ć†·ćŠ±ć¶ș怜çŽČ瀌苓鈎隷零霊éș—éœąæšŠæ­Žćˆ—ćŠŁçƒˆèŁ‚ć»‰æ‹æ†æŒŁç…‰ç°Ÿç·ŽèŻ"], -["9840","è“źé€ŁéŒŹć‘‚é­Żæ«“ç‚‰èł‚è·ŻéœČćŠŽć©ć»ŠćŒ„æœ—æ„ŒæŠ”æ”ȘæŒç‰ąç‹ŒçŻ­è€èŸè‹éƒŽć…­éș“犄肋éŒČè«–ć€­ć’Œè©±æ­Șèł„è„‡æƒ‘æž é·Čäș™äș˜é°è©«è—è•𿀀æčŸçą—è…•"], -["989f","ćŒŒäžäž•äžȘäž±äž¶äžŒäžżäč‚äč–äč˜äș‚äș…豫äșŠèˆ’ćŒäșŽäșžäșŸäș äșąäș°äșłäș¶ä»Žä»ä»„ä»†ä»‚ä»—ä»žä»­ä»Ÿä»·äŒ‰äœšäŒ°äœ›äœäœ—äœ‡äœ¶äŸˆäŸäŸ˜äœ»äœ©äœ°äŸ‘äœŻäŸ†äŸ–ć„˜äż”äżŸäżŽäż˜äż›äż‘äżšäżäż€äż„怚怹怔ć€Șć€„ć€…äŒœäż¶ć€Ąć€©ć€ŹäżŸäżŻć€‘ć€†ćƒć‡æœƒć•ććˆćšć–ćŹćžć‚€ć‚šć‚…ć‚Žć‚Č"], -["9940","ćƒ‰ćƒŠć‚łćƒ‚ćƒ–ćƒžćƒ„ćƒ­ćƒŁćƒźćƒčćƒ”ć„‰ć„ć„‚ć„–ć„•ć„”ć„šć„Ąć„șć„·ć„Œć„»ć„żć…€ć…’ć…Œć…”ć…ąç«žć…©ć…Șć…źć†€ć†‚ć›˜ć†Œć†‰ć†ć†‘ć†“ć†•ć†–ć†€ć†Šć†ąć†©ć†Ș憫憳憱ć†Čć†°ć†”ć†œć‡…ć‡‰ć‡›ć‡ è™•ć‡©ć‡­"], -["9980","ć‡°ć‡”ć‡Ÿćˆ„ćˆ‹ćˆ”ćˆŽćˆ§ćˆȘ戟戳ćˆč扏扄手扌扞扔ć‰Șć‰Žć‰©ć‰łć‰żć‰œćŠćŠ”ćŠ’ć‰±ćŠˆćŠ‘èŸšèŸ§ćŠŹćŠ­ćŠŒćŠ”ć‹ć‹ć‹—ć‹žć‹Łć‹ŠéŁ­ć‹ ć‹łć‹”ć‹žć‹čćŒ†ćŒˆç”žćŒćŒćŒćŒ•ćŒšćŒŁćŒŻćŒ±ćŒłćŒžć€ć†ć…äž—ć‰ćć‡–ćžć©ćźć€˜ć»ć·ćŽ‚ćŽ–ćŽ ćŽŠćŽ„ćŽźćŽ°ćŽ¶ćƒç°’é›™ćŸæ›Œç‡źćźćšć­ćșććœć‘€ćŹć­ćŒćźć¶ć©ćć‘Žć’ć‘”ć’Žć‘Ÿć‘±ć‘·ć‘°ć’’ć‘»ć’€ć‘¶ć’„ć’ć’†ć“‡ć’ąć’žć’„ć’Źć“„ć“ˆć’š"], -["9a40","ć’«ć“‚ć’€ć’Ÿć’Œć“˜ć“„ć“Šć”ć””ć“œć“źć“­ć“ș擱ć”čć•€ć•Łć•Œć”źć•œć•…ć•–ć•—ć”žć”łć•ć–™ć–€ć’Żć–Šć–Ÿć•»ć•Ÿć–˜ć–žć–źć•Œć–ƒć–©ć–‡ć–šć—šć—…ć—Ÿć—„ć—œć—€ć—”ć˜”ć—·ć˜–ć—Ÿć—œć˜›ć—čć™Žć™ç‡Ÿć˜Žć˜¶ć˜Č昞"], -["9a80","ć™«ć™€ć˜Żć™Źć™Șćš†ćš€ćšŠćš ćš”ćšćš„ćšźćš¶ćšŽć›‚ćšŒć›ć›ƒć›€ć›ˆć›Žć›‘ć›“ć›—ć›źć›čćœ€ć›żćœ„ćœ‰ćœˆćœ‹ćœćœ“ćœ˜ćœ–ć—‡ćœœćœŠćœ·ćœžćŽćœ»ć€ćć©ćŸ€ćžˆćĄćżćž‰ćž“ćž ćžłćž€ćžȘ枰柃柆柔柒染栊柖柣栋栙栝ćĄČć ĄćĄąćĄ‹ćĄ°æŻ€ćĄ’ć œćĄč汅ćąčćąŸćą«ćąșćŁžćą»ćąžćąźćŁ…ćŁ“ćŁ‘ćŁ—ćŁ™ćŁ˜ćŁ„ćŁœćŁ€ćŁŸćŁŻćŁșćŁčćŁ»ćŁŒćŁœć€‚ć€Šć€ć€›æąŠć€„ć€Źć€­ć€Čć€žć€Ÿç«’ć„•ć„ć„Žć„šć„˜ć„ąć„ ć„§ć„Źć„©"], -["9b40","ć„žćŠćŠäœžäŸ«ćŠŁćŠČć§†ć§šć§œćŠć§™ć§šćš„ćšŸćš‘ćšœćš‰ćššć©€ć©Źć©‰ćš”ćš¶ć©ąć©ȘćȘšćȘŒćȘŸć«‹ć«‚ćȘœć«Łć«—櫊櫩櫖ć«șć«»ćŹŒćŹ‹ćŹ–ćŹČ櫐ćŹȘćŹ¶ćŹŸć­ƒć­…ć­€ć­‘ć­•ć­šć­›ć­„ć­©ć­°ć­łć­”ć­žæ–ˆć­ș漀"], -["9b80","ćźƒćźŠćźžćŻƒćŻ‡ćŻ‰ćŻ”ćŻćŻ€ćŻŠćŻąćŻžćŻ„ćŻ«ćŻ°ćŻ¶ćŻłć°…ć°‡ć°ˆć°ć°“ć° ć°ąć°šć°žć°čć±ć±†ć±Žć±“ć±ć±ć­±ć±Źć±źäčąć±¶ć±čćȌćȑćȔ橛ćČ«ćČ»ćȶćČŒćČ·ćł…ćČŸćł‡ćł™ćł©ćłœćłșćł­ć¶ŒćłȘćŽ‹ćŽ•ćŽ—ć”œćŽŸćŽ›ćŽ‘ćŽ”ćŽąćŽšćŽ™ćŽ˜ć”Œć”’ć”Žć”‹ć”Źć”łć”¶ć¶‡ć¶„ć¶‚ć¶ąć¶ć¶Źć¶źć¶œć¶ć¶·ć¶Œć·‰ć·ć·“ć·’ć·–ć·›ć·«ć·Č淔枋枚枙枑枛架枷ćč„ćčƒćč€ćčŽćč—ćč”ćčŸćčąćč€ćč‡ćč”ćč¶ćčșéșŒćčżćș ć»ć»‚ć»ˆć»ć»"], -["9c40","ć»–ć»Łć»ć»šć»›ć»ąć»Ąć»šć»©ć»Źć»±ć»łć»°ć»Žć»žć»ŸćŒƒćŒ‰ćœćœœćŒ‹ćŒ‘ćŒ–ćŒ©ćŒ­ćŒžćœćœˆćœŒćœŽćŒŻćœ‘ćœ–ćœ—ćœ™ćœĄćœ­ćœłćœ·ćŸƒćŸ‚ćœżćŸŠćŸˆćŸ‘ćŸ‡ćŸžćŸ™ćŸ˜ćŸ ćŸšćŸ­ćŸŒćż–ćż»ćż€ćżžćż±ćżæ‚łćżżæ€Ąæ "], -["9c80","怙怐怩怎怱怛怕怫怊怏æ€ș恚恁æȘæ·æŸæŠæ†ææŁæƒæ€æ‚æŹæ«æ™æ‚æ‚æƒ§æ‚ƒæ‚šæ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒĄæ‚žæƒ æƒ“æ‚Žćż°æ‚œæƒ†æ‚”æƒ˜æ…æ„•æ„†æƒ¶æƒ·æ„€æƒŽæƒșæ„ƒæ„Ąæƒ»æƒ±æ„æ„Žæ…‡æ„Ÿæ„šæ„§æ…Šæ„żæ„Œæ„Źæ„Žæ„œæ…‚æ…„æ…łæ…·æ…˜æ…™æ…šæ…«æ…Žæ…Żæ…„æ…±æ…Ÿæ…æ…“æ…”æ†™æ†–æ†‡æ†Źæ†”æ†šæ†Šæ†‘æ†«æ†źæ‡Œæ‡Šæ‡‰æ‡·æ‡ˆæ‡ƒæ‡†æ†ș懋çœčæ‡æ‡Šæ‡Łæ‡¶æ‡șæ‡Žæ‡żæ‡œæ‡Œæ‡Ÿæˆ€æˆˆæˆ‰æˆæˆŒæˆ”æˆ›"], -["9d40","æˆžæˆĄæˆȘæˆźæˆ°æˆČæˆłæ‰æ‰Žæ‰žæ‰Łæ‰›æ‰ æ‰šæ‰ŒæŠ‚æŠ‰æ‰ŸæŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹æ‹żæ‹†æ“”æ‹ˆæ‹œæ‹Œæ‹Šæ‹‚æ‹‡æŠ›æ‹‰æŒŒæ‹źæ‹±æŒ§æŒ‚æŒˆæ‹Żæ‹”ææŒŸææœææŽ–æŽŽæŽ€æŽ«æ¶æŽŁæŽæŽ‰æŽŸæŽ”æ«"], -["9d80","æ©æŽŸæ©æ€æ†æŁæ‰æ’æ¶æ„æ–æŽæ†æ“æŠæ¶æ”æ—æšææ‘§æ‘Żæ‘¶æ‘Žæ”Șæ’•æ’“æ’„æ’©æ’ˆæ’Œæ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“ĄæŠŹæ“Łæ“Żæ”Źæ“¶æ“Žæ“Čæ“șæ”€æ“œæ”˜æ”œæ”…æ”€æ”Łæ”«æ”Žæ””æ”·æ”¶æ”žç•‹æ•ˆæ•–æ••æ•æ•˜æ•žæ•æ•Čæ•žæ–‚æ–ƒèźŠæ–›æ–Ÿæ–«æ–·æ—ƒæ—†æ—æ—„æ—Œæ—’æ—›æ—™æ— æ—Ąæ—±æČæ˜Šæ˜ƒæ—»æłæ˜”æ˜¶æ˜Žæ˜œæ™æ™„æ™‰æ™æ™žæ™æ™€æ™§æ™šæ™Ÿæ™ąæ™°æšƒæšˆæšŽæš‰æš„æš˜æšæ›æšč曉暟暌"], -["9e40","æ›„æšžæ›–æ›šæ› æ˜żæ›Šæ›©æ›°æ›”æ›·æœæœ–æœžæœŠæœ§éœžæœźæœżæœ¶ææœžæœ·æ†æžæ æ™æŁæ€æž‰æ°æž©æŒæȘæžŒæž‹æžŠæžĄæž…æž·æŸŻæžŽæŸŹæžłæŸ©æžžæŸ€æŸžæŸæŸąæŸźæžč柎柆柧æȘœæ žæĄ†æ ©æĄ€æĄæ ČæĄŽ"], -["9e80","æąłæ «æĄ™æĄŁæĄ·æĄżæąŸæąæą­æą”æąæą›æąƒæȘźæąčæĄŽæą”æą æąșæ€æąæĄŸæ€æŁŠæ€ˆæŁ˜æ€ąæ€ŠæŁĄæ€ŒæŁæŁ”æŁ§æŁ•æ€¶æ€’æ€„æŁ—æŁŁæ€„æŁčæŁ æŁŻæ€šæ€Șæ€šæ€Łæ€ĄæŁ†æ„čæ„·æ„œæ„žæ„«æ„”感æ„꿀迄޿€œæ„™æ€°æ„Ąæ„žæ„æŠæ„ȘæŠČæŠźæ§æŠżæ§æ§“æŠŸæ§ŽćŻšæ§Šæ§æŠ»æ§ƒæŠ§æšźæŠ‘æŠ æŠœæŠ•æŠŽæ§žæ§šæš‚æš›æ§żæŹŠæ§čæ§Čæ§§æš…æŠ±æšžæ§­æš”æ§«æšŠæš’æ«æšŁæš“æ©„æšŒæ©Čæš¶æ©žæ©‡æ©ąæ©™æ©Šæ©ˆæšžæšąæȘæȘæȘ æȘ„æȘąæȘŁ"], -["9f40","æȘ—蘗æȘ»æ«ƒæ«‚æȘžæȘłæȘŹæ«žæ«‘櫟æȘȘ櫚æ«Șæ«»æŹ…è˜–æ«șæŹ’æŹ–éŹ±æŹŸæŹžæŹ·ç›œæŹčéŁźæ­‡æ­ƒæ­‰æ­æ­™æ­”æ­›æ­Ÿæ­Ąæ­žæ­čæ­żæź€æź„æźƒæźæź˜æź•æźžæź€æźȘæź«æźŻæźČæź±æźłæź·æźŒæŻ†æŻ‹æŻ“æŻŸæŻŹæŻ«æŻłæŻŻ"], -["9f80","éșŸæ°ˆæ°“æ°”æ°›æ°€æ°Łæ±žæ±•æ±ąæ±ȘæČ‚æČæČšæČæČ›æ±Ÿæ±šæ±łæČ’æČæł„æł±æł“æČœæł—æł…æłæČźæČ±æČŸæČșæł›æłŻæł™æłȘæŽŸèĄæŽ¶æŽ«æŽœæŽžæŽ™æŽ”æŽłæŽ’æŽŒæ”Łæ¶“æ”€æ”šæ”čæ”™æ¶Žæ¶•æż€æ¶…æ·čæž•æžŠæ¶”æ·‡æ·Šæ¶žæ·†æ·Źæ·žæ·Œæ·šæ·’æ·…æ·ș淙淀淕æ·Șæ·źæž­æčźæžźæž™æčȿ蟿žŸæžŁæč«æž«æč¶æčæžŸæčƒæžșæčŽæž€æ»żæžæžžæș‚æșȘæș˜æ»‰æș·æ»“æșœæșŻæ»„æșČæ»”滕æșæș„滂æșŸæœæŒ‘çŒæ»Źæ»žæ»ŸæŒżæ»ČæŒ±æ»ŻæŒČ滌"], -["e040","挟挓滷柆æœșæœžæŸæŸ€æœŻæœ›æżłæœ­æŸ‚æœŒæœ˜æŸŽæŸ‘æż‚æœŠæŸłæŸŁæŸĄæŸ€æŸčæż†æŸȘæżŸæż•æżŹæż”æż˜æż±æżźæż›ç€‰ç€‹æżșç€‘ç€ç€æżŸç€›ç€šæœŽç€ç€˜ç€Ÿç€°ç€Ÿç€Čç‘çŁç‚™ç‚’ç‚Żçƒ±ç‚Źç‚žç‚łç‚źçƒŸçƒ‹çƒ"], -["e080","çƒ™ç„‰çƒœç„œç„™ç…„ç…•ç†ˆç…Šç…ąç…Œç…–ç…Źç†ç‡»ç†„ç†•ç†šç†Źç‡—ç†čç†Ÿç‡’ç‡‰ç‡”ç‡Žç‡ ç‡Źç‡§ç‡”ç‡Œç‡č燿爍爐爛爹爭爬爰çˆČçˆ»çˆŒçˆżç‰€ç‰†ç‰‹ç‰˜ç‰Žç‰ŸçŠ‚çŠçŠ‡çŠ’çŠ–çŠąçŠ§çŠčçŠČ狃狆狄狎狒狱狠狡ç‹čç‹·ć€çŒ—çŒŠçŒœçŒ–çŒçŒŽçŒŻçŒ©çŒ„çŒŸçŽçé»˜ç—çȘ獚獰獞獔獻çșçˆçŽłçŽçŽ»ç€ç„çźçžç’ąç…ç‘Żç„çžçČçșç‘•çżç‘Ÿç‘™ç‘ç‘œç‘©ç‘°ç‘Łç‘Ș瑶瑟璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓟ç“Čç“°ç“±ç“žç“·ç”„ç”ƒç”…ç”Œç”Žç”ç”•ç”“ç”žç”Šç”Źç”Œç•„ç•ç•Šç•‰ç•›ç•†ç•šç•©ç•€ç•§ç•«ç•­ç•žç•¶ç–†ç–‡ç•Žç–Šç–‰ç–‚ç–”ç–šç–ç–„ç–Łç—‚ç–łç—ƒç–”ç–œç–žç–Œç–±ç—ç—Šç—’ç—™ç—Łç—žç—Ÿç—ż"], -["e180","痌瘁痰ç—șç—Čç—łç˜‹ç˜ç˜‰ç˜Ÿç˜§ç˜ ç˜Ąç˜ąç˜€ç˜Žç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™Ąç™ąç™šç™©ç™Ș癧癬癰ç™Č癶癞癌皀皃皈皋皎皖皓皙皚皰皎皞çščçšșç›‚ç›ç›–ç›’ç›žç›Ąç›„ç›§ç›Șè˜Żç›»çœˆçœ‡çœ„çœ©çœ€çœžçœ„çœŠçœ›çœ·çœžç‡çšçšç«ç›ç„çżçŸçč瞎瞋瞑瞠瞞瞰瞶çžčçžżçžŒçžœçž»çŸ‡çŸçŸ—çŸšçŸœçŸŁçŸźçŸŒç Œç ’ç€Šç  ç€ȘçĄ…çąŽçĄŽçą†çĄŒçąšçąŒçąŁçą”çąȘçąŻçŁ‘çŁ†çŁ‹çŁ”çąŸçąŒçŁ…çŁŠçŁŹ"], -["e240","çŁ§çŁšçŁœçŁŽç€‡ç€’ç€‘ç€™ç€Źç€«ç„€ç„ ç„—ç„Ÿç„šç„•ç„“ç„șç„żçŠŠçŠçŠ§éœ‹çŠȘ犟犳çŠčçŠșç§‰ç§•ç§§ç§Źç§Ąç§Łçšˆçšçš˜çš™çš çšŸçŠ€çš±çš»çšŸçš·ç©ƒç©—ç©‰ç©Ąç©ąç©©éŸç©°ç©č穜çȘˆçȘ—çȘ•çȘ˜çȘ–çȘ©ç«ˆçȘ°"], -["e280","çȘ¶ç«…ç«„çȘżé‚ƒç«‡ç«Šç«ç«ç«•ç«“ç«™ç«šç«ç«Ąç«ąç«Šç«­ç«°çŹ‚çŹçŹŠçŹ†çŹłçŹ˜çŹ™çŹžçŹ”çŹšçŹ¶ç­ç­șçŹ„ç­çŹ‹ç­Œç­…ç­”ç­„ç­Žç­§ç­°ç­±ç­Źç­źçźçź˜çźŸçźçźœçźšçź‹çź’çźç­çź™çŻ‹çŻçŻŒçŻçźŽçŻ†çŻçŻ©ç°‘ç°”çŻŠçŻ„ç± ç°€ç°‡ç°“çŻłçŻ·ç°—ç°çŻ¶ç°Łç°§ç°Șç°Ÿç°·ç°«ç°œç±Œç±ƒç±”ç±ç±€ç±ç±˜ç±Ÿç±€ç±–ç±„ç±Źç±”çȃçȐçČ€çČ­çČąçČ«çČĄçČšçČłçČČçȱçČźçČčçČœçł€çł…çł‚çł˜çł’çłœçłąéŹ»çłŻçłČ糎糶çłș箆"], -["e340","çŽ‚çŽœçŽ•çŽŠç”…ç”‹çŽźçŽČ玿玔甆申甖甎ç”Čç”šç”źç”ç”Łç¶“ç¶‰ç”›ç¶ç”œç¶›ç¶șç¶źç¶Łç¶”ç·‡ç¶œç¶«çžœç¶ąç¶Żç·œç¶žç¶Ÿç¶°ç·˜ç·ç·€ç·žç·»ç·Čç·Ąçž…çžŠçžŁçžĄçž’çž±çžŸçž‰çž‹çžąçč†çčŠçž»çž”çžčçčƒçž·"], -["e380","çžČçžșçč§çčçč–çčžçč™çčšçččçčȘçč©çčŒçč»çșƒç·•çčœèŸźçčżçșˆçș‰çșŒçș’çșçș“çș”çș–çșŽçș›çșœçŒžçŒșçœ…çœŒçœçœŽçœçœ‘çœ•çœ”çœ˜çœŸçœ çœšçœ©çœ§çœžçŸ‚çŸ†çŸƒçŸˆçŸ‡çŸŒçŸ”çŸžçŸçŸšçŸŁçŸŻçŸČçŸčçŸźçŸ¶çŸžè­±çż…çż†çżŠçż•çż”çżĄçżŠçż©çżłçżčéŁœè€†è€„è€‹è€’è€˜è€™è€œè€Ąè€šè€żè€»èŠè†è’è˜èšèŸèąèšèłèČ聰聶èčèœèżè‚„è‚†è‚…è‚›è‚“è‚šè‚­ć†è‚Źèƒ›èƒ„èƒ™èƒèƒ„èƒšèƒ–è„‰èƒŻèƒ±è„›è„©è„Łè„Żè…‹"], -["e440","éš‹è…†è„Ÿè…“è…‘èƒŒè…±è…źè…„è…Šè…Žè†ƒè†ˆè†Šè†€è†‚è† è†•è†€è†Łè…Ÿè†“è†©è†°è†”è†Ÿè†žè†œè‡€è‡‚è†ș臉臍臑臙臘臈臚臟臠臧è‡șè‡»è‡Ÿèˆèˆ‚èˆ…èˆ‡èˆŠèˆèˆèˆ–èˆ©èˆ«èˆžèˆłè‰€è‰™è‰˜è‰è‰šè‰Ÿè‰€"], -["e480","è‰ąè‰šè‰Șè‰«èˆźè‰±è‰·è‰žè‰ŸèŠèŠ’èŠ«èŠŸèŠ»èŠŹè‹Ąè‹Łè‹Ÿè‹’è‹Žè‹łè‹ș莓范苻è‹č苞茆苜茉苙茔茎茖èŒČ茱荀èŒčèè…èŒŻèŒ«èŒ—èŒ˜èŽ…èŽšèŽȘèŽŸèŽąèŽ–èŒŁèŽŽèŽ‡èŽŠèŒèŽ”èłè”èŽ èŽ‰èŽšèŽè“è«èŽèœèƒè˜è‹èè·è‡è èČèèąè èŽœèžè”†è»è‘­èȘèŒè•šè’„è‘·è‘«è’­è‘źè’‚è‘©è‘†èŹè‘Żè‘čè”è“Šè‘ąè’čè’żè’Ÿè“™è“è’»è“šè“è“è“†è“–è’Ąè”Ąè“żè“Žè”—è”˜è”Źè”Ÿè”•è””è“Œè•€è•Łè•˜è•ˆ"], -["e540","蕁蘂蕋蕕薀薀薈薑薊薚蕭薔薛è—Ș薇薜蕷蕟薐藉è–ș藏è–č藐藕藝藄藜è—č蘊蘓蘋藟è—șè˜†è˜ąè˜šè˜°è˜żè™äč•è™”è™Ÿè™§è™±èš“èšŁèš©èšȘèš‹èšŒèš¶èšŻè›„è›†èš°è›‰è Łèš«è›”è›žè›©è›Ź"], -["e580","è›Ÿè››è›Żèœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœè›čèœŠèœŽèœżèœ·èœ»èœ„èœ©èœšè èŸèžèŒèŽèŽè—èšèźè™è“èŁèȘè …èžąèžŸèž‚èžŻèŸ‹èžœèŸ€èŸé›–èž«èŸ„èžłèŸ‡èŸ†èž»èŸŻèŸČèŸ è è èŸŸèŸ¶èŸ·è ŽèŸ’è ‘è –è •è ąè Ąè ±è ¶è čè §è »èĄ„èĄ‚èĄ’èĄ™èĄžèĄąèĄ«èąèĄŸèąžèĄ”èĄœèą”èĄČèą‚èą—èą’èąźèą™èąąèąèą€èą°èążèą±èŁƒèŁ„èŁ”èŁ˜èŁ™èŁèŁčè€‚èŁŒèŁŽèŁšèŁČ耄而耊耓脃耞耄è€Ș耫脁脄耻耶耞脌耝脠脞"], -["e640","脊脀脭è„Șè„Żè„Žè„·è„ŸèŠƒèŠˆèŠŠèŠ“èŠ˜èŠĄèŠ©èŠŠèŠŹèŠŻèŠČèŠșèŠœèŠżè§€è§šè§œè§è§§è§Žè§žèšƒèš–èšèšŒèš›èšèš„èš¶è©è©›è©’è©†è©ˆè©Œè©­è©Źè©ąèȘ…èȘ‚èȘ„èȘšèȘĄèȘ‘èȘ„èȘŠèȘšèȘŁè«„è«è«‚è«šè««è«łè«§"], -["e680","è«€è«±èŹ”è« è«ąè«·è«žè«›èŹŒèŹ‡èŹšè«ĄèŹ–èŹèŹ—èŹ èŹłéž«èŹŠèŹ«èŹŸèŹšè­è­Œè­è­Žè­‰è­–è­›è­šè­«è­Ÿè­Źè­Żè­Žè­œèź€èźŒèźŽèź’èź“èź–èź™èźšè°șè±è°żè±ˆè±Œè±Žè±è±•è±ąè±Źè±žè±șèȂèȉèȅèȊèȍèȎèČ”è±ŒèČ˜æˆèČ­èČȘèČœèČČèČłèČźèČ¶èłˆèłèł€èłŁèłšèłœèłșèł»èŽ„èŽ…èŽŠèŽ‡èŽèŽèŽéœŽèŽ“èłèŽ”èŽ–è”§è”­è”±è”łè¶è¶™è·‚è¶Ÿè¶ș跏跚跖跌跛跋è·Șè·«è·Ÿè·Łè·Œèžˆèž‰è·żèžèžžèžèžŸèč‚èž”螰螎èčŠ"], -["e740","èč‡èč‰èčŒèčèčˆèč™èč€èč èžȘèčŁèč•èč¶èčČèčŒèșèș‡èș…èș„èș‹èșŠèș“èș‘èș”èș™èșȘèșĄèșŹèș°è»†èș±èșŸè»…è»ˆè»‹è»›è»Łè»Œè»»è»«è»ŸèŒŠèŒ…èŒ•èŒ’èŒ™èŒ“èŒœèŒŸèŒ›èŒŒèŒŠèŒłèŒ»èŒč蜅蜂茟蜌蜉蜆蜎蜗蜜"], -["e780","èœąèœŁèœ€èŸœèŸŸèŸŁèŸ­èŸŻèŸ·èżšèż„èżąèżȘèżŻé‚‡èżŽé€…èżčèżșé€‘é€•é€Ąé€é€žé€–é€‹é€§é€¶é€”é€čèżžééé‘é’é€Žé‰é€Ÿé–é˜éžéšéŻé¶éššéČé‚‚éœé‚é‚€é‚Šé‚‰é‚é‚šé‚Żé‚±é‚”éƒąéƒ€æ‰ˆéƒ›é„‚é„’é„™é„Čé„°é…Šé…–é…˜é…Łé…„é…©é…łé…Č醋醉醂醹醫醯é†Ș醔醎é†șé‡€é‡é‡‰é‡‹é‡é‡–é‡Ÿé‡Ąé‡›é‡Œé‡”é‡¶éˆžé‡żéˆ”éˆŹéˆ•éˆ‘é‰žé‰—é‰…é‰‰é‰€é‰ˆéŠ•éˆżé‰‹é‰éŠœéŠ–éŠ“éŠ›é‰šé‹éŠč銷鋩錏é‹ș鍄錼"], -["e840","錙錱錚錣éŒșéŒ”éŒ»éœé éŒéźé–éŽ°éŽŹéŽ­éŽ”éŽčé–é—éšé„é˜éƒéééˆé€éšé”é“éƒé‡éé¶é«é”éĄéș鑁鑒鑄鑛鑠鑱鑞é‘Șéˆ©é‘°é‘”é‘·é‘œé‘šé‘Œé‘Ÿé’é‘żé–‚é–‡é–Šé–”é––é–˜é–™"], -["e880","閠閚閧閭閌閻é–čé–Ÿé—Šæż¶é—ƒé—é—Œé—•é—”é—–é—œé—Ąé—„é—ąé˜Ąé˜šé˜źé˜Żé™‚é™Œé™é™‹é™·é™œé™žé™é™Ÿé™Šé™Č陬隍隘隕隗éšȘ隧隱éšČ隰階隶隞éšč雎雋雉雍脍雜霍雕é›č霄霆霈霓霎霑霏霖霙需éœȘ霰éœčéœœéœŸé„é†éˆé‚é‰éœé é€éŠéšć‹’é«é±éč鞅靌鞁éșéž†éž‹éžéžéžœéžšéžŠéžŁéžłéžŽéŸƒéŸ†éŸˆéŸ‹éŸœéŸ­éœéŸČç«ŸéŸ¶éŸ”é é Œé žé €é Ąé ·é œéĄ†éĄéĄ‹éĄ«éĄŻéĄ°"], -["e940","饱饎饳éąȘéąŻéą±éą¶éŁ„éŁƒéŁ†éŁ©éŁ«é€ƒé€‰é€’é€”é€˜é€Ąé€é€žé€€é€ é€Źé€źé€œé€Ÿé„‚é„‰é„…é„é„‹é„‘é„’é„Œé„•éŠ—éŠ˜éŠ„éŠ­éŠźéŠŒé§Ÿé§›é§é§˜é§‘é§­é§źé§±é§Čé§»é§žéšéšéš…é§ąéš™éš«éš·é©…é©‚é©€é©ƒ"], -["e980","éšŸé©•é©é©›é©—é©Ÿé©ąé©„é©€é©©é©«é©ȘéȘ­éȘ°éȘŒé«€é«é«‘é«“é«”é«žé«Ÿé«ąé«Łé«Šé«Żé««é«źé«Žé«±é«·é«»éŹ†éŹ˜éŹšéŹŸéŹąéŹŁéŹ„éŹ§éŹšéŹ©éŹȘ鏟鏯éŹČ魄魃魏魍魎魑魘魮鼓鼃鼑鼖鼗鼟鼠鼹鼮鯀鯊éźčéŻ†éŻéŻ‘éŻ’éŻŁéŻąéŻ€éŻ”éŻĄé°șéŻČéŻ±éŻ°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°źé°›é°„é°€é°Ąé°°é±‡é°Čé±†é°Ÿé±šé± é±§é±¶é±žéł§éłŹéł°éŽ‰éŽˆéł«éŽƒéŽ†éŽȘéŽŠé¶ŻéŽŁéŽŸé”„éŽ•éŽ’é”éŽżéŽŸé”†é”ˆ"], -["ea40","锝锞销锑锐错é”Č鶉鶇鶫锯é”ș鶚鶀鶩é¶Č鷄鷁鶻鶞é¶șé·†é·é·‚é·™é·“é·žé·Šé·­é·Żé·œéžšéž›éžžéč”éččéčœéșéșˆéș‹éșŒéș’éș•éș‘éșéș„éș©éșžéșȘéș­éĄé»Œé»Žé»é»é»”黜點黝黠黄黚黯"], -["ea80","黎黶黷é»čé»»é»Œé»œéŒ‡éŒˆçš·éŒ•éŒĄéŒŹéŒŸéœŠéœ’éœ”éœŁéœŸéœ éœĄéœŠéœ§éœŹéœȘ霷éœČéœ¶éŸ•éŸœéŸ ć Żæ§‡é™ç‘€ć‡œç†™"], -["ed40","çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Šć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïš"], -["ed80","ïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Żæ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±"], -["ee40","çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄșç€°ïš˜ïš™ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™"], -["ee80","è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡šé‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™é«œé­”é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"], -["eeef","ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚"], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚ăˆ±â„–â„Ąâˆ”çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Š"], -["fa80","ć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïšïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Ż"], -["fb40","æ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄș瀰"], -["fb80","ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡šé‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™"], -["fc40","髜魔é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"] -] diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf16.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf16.js deleted file mode 100644 index 97d0669..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf16.js +++ /dev/null @@ -1,197 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js - -// == UTF16-BE codec. ========================================================== - -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} - -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf16BEEncoder() { -} - -Utf16BEEncoder.prototype.write = function(str) { - var buf = Buffer.from(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; - } - return buf; -} - -Utf16BEEncoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf16BEDecoder() { - this.overflowByte = -1; -} - -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; - - var buf2 = Buffer.alloc(buf.length + 1), - i = 0, j = 0; - - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; - } - - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; - } - - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - - return buf2.slice(0, j).toString('ucs2'); -} - -Utf16BEDecoder.prototype.end = function() { - this.overflowByte = -1; -} - - -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). - -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; -} - -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; - - -// -- Encoding (pass-through) - -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); -} - -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} - -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} - - -// -- Decoding - -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -} - -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - return this.decoder.end(); -} - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 2) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; - if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; - } - - if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; - if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; - if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-16le'; -} - - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf32.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf32.js deleted file mode 100644 index 2fa900a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf32.js +++ /dev/null @@ -1,319 +0,0 @@ -'use strict'; - -var Buffer = require('safer-buffer').Buffer; - -// == UTF32-LE/BE codec. ========================================================== - -exports._utf32 = Utf32Codec; - -function Utf32Codec(codecOptions, iconv) { - this.iconv = iconv; - this.bomAware = true; - this.isLE = codecOptions.isLE; -} - -exports.utf32le = { type: '_utf32', isLE: true }; -exports.utf32be = { type: '_utf32', isLE: false }; - -// Aliases -exports.ucs4le = 'utf32le'; -exports.ucs4be = 'utf32be'; - -Utf32Codec.prototype.encoder = Utf32Encoder; -Utf32Codec.prototype.decoder = Utf32Decoder; - -// -- Encoding - -function Utf32Encoder(options, codec) { - this.isLE = codec.isLE; - this.highSurrogate = 0; -} - -Utf32Encoder.prototype.write = function(str) { - var src = Buffer.from(str, 'ucs2'); - var dst = Buffer.alloc(src.length * 2); - var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; - var offset = 0; - - for (var i = 0; i < src.length; i += 2) { - var code = src.readUInt16LE(i); - var isHighSurrogate = (0xD800 <= code && code < 0xDC00); - var isLowSurrogate = (0xDC00 <= code && code < 0xE000); - - if (this.highSurrogate) { - if (isHighSurrogate || !isLowSurrogate) { - // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low - // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character - // (technically wrong, but expected by some applications, like Windows file names). - write32.call(dst, this.highSurrogate, offset); - offset += 4; - } - else { - // Create 32-bit value from high and low surrogates; - var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000; - - write32.call(dst, codepoint, offset); - offset += 4; - this.highSurrogate = 0; - - continue; - } - } - - if (isHighSurrogate) - this.highSurrogate = code; - else { - // Even if the current character is a low surrogate, with no previous high surrogate, we'll - // encode it as a semi-invalid stand-alone character for the same reasons expressed above for - // unpaired high surrogates. - write32.call(dst, code, offset); - offset += 4; - this.highSurrogate = 0; - } - } - - if (offset < dst.length) - dst = dst.slice(0, offset); - - return dst; -}; - -Utf32Encoder.prototype.end = function() { - // Treat any leftover high surrogate as a semi-valid independent character. - if (!this.highSurrogate) - return; - - var buf = Buffer.alloc(4); - - if (this.isLE) - buf.writeUInt32LE(this.highSurrogate, 0); - else - buf.writeUInt32BE(this.highSurrogate, 0); - - this.highSurrogate = 0; - - return buf; -}; - -// -- Decoding - -function Utf32Decoder(options, codec) { - this.isLE = codec.isLE; - this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); - this.overflow = []; -} - -Utf32Decoder.prototype.write = function(src) { - if (src.length === 0) - return ''; - - var i = 0; - var codepoint = 0; - var dst = Buffer.alloc(src.length + 4); - var offset = 0; - var isLE = this.isLE; - var overflow = this.overflow; - var badChar = this.badChar; - - if (overflow.length > 0) { - for (; i < src.length && overflow.length < 4; i++) - overflow.push(src[i]); - - if (overflow.length === 4) { - // NOTE: codepoint is a signed int32 and can be negative. - // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). - if (isLE) { - codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24); - } else { - codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24); - } - overflow.length = 0; - - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - } - - // Main loop. Should be as optimized as possible. - for (; i < src.length - 3; i += 4) { - // NOTE: codepoint is a signed int32 and can be negative. - if (isLE) { - codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24); - } else { - codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24); - } - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - - // Keep overflowing bytes. - for (; i < src.length; i++) { - overflow.push(src[i]); - } - - return dst.slice(0, offset).toString('ucs2'); -}; - -function _writeCodepoint(dst, offset, codepoint, badChar) { - // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. - if (codepoint < 0 || codepoint > 0x10FFFF) { - // Not a valid Unicode codepoint - codepoint = badChar; - } - - // Ephemeral Planes: Write high surrogate. - if (codepoint >= 0x10000) { - codepoint -= 0x10000; - - var high = 0xD800 | (codepoint >> 10); - dst[offset++] = high & 0xff; - dst[offset++] = high >> 8; - - // Low surrogate is written below. - var codepoint = 0xDC00 | (codepoint & 0x3FF); - } - - // Write BMP char or low surrogate. - dst[offset++] = codepoint & 0xff; - dst[offset++] = codepoint >> 8; - - return offset; -}; - -Utf32Decoder.prototype.end = function() { - this.overflow.length = 0; -}; - -// == UTF-32 Auto codec ============================================================= -// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. -// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 -// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); - -// Encoder prepends BOM (which can be overridden with (addBOM: false}). - -exports.utf32 = Utf32AutoCodec; -exports.ucs4 = 'utf32'; - -function Utf32AutoCodec(options, iconv) { - this.iconv = iconv; -} - -Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; -Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; - -// -- Encoding - -function Utf32AutoEncoder(options, codec) { - options = options || {}; - - if (options.addBOM === undefined) - options.addBOM = true; - - this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options); -} - -Utf32AutoEncoder.prototype.write = function(str) { - return this.encoder.write(str); -}; - -Utf32AutoEncoder.prototype.end = function() { - return this.encoder.end(); -}; - -// -- Decoding - -function Utf32AutoDecoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf32AutoDecoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -}; - -Utf32AutoDecoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.end(); -}; - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE. - var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 4) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { - return 'utf-32le'; - } - if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { - return 'utf-32be'; - } - } - - if (b[0] !== 0 || b[1] > 0x10) invalidBE++; - if (b[3] !== 0 || b[2] > 0x10) invalidLE++; - - if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; - if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be'; - if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-32le'; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf7.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf7.js deleted file mode 100644 index eacae34..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/encodings/utf7.js +++ /dev/null @@ -1,290 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; - - -// -- Encoding - -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; - -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} - -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); -} - -Utf7Encoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); - -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. - - -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = Buffer.alloc(6); - this.base64AccumIdx = 0; -} - -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; - - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; - } - - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; - } - - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; - - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; - } - } - } - } - - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; - - return buf.slice(0, bufIdx); -} - -Utf7IMAPEncoder.prototype.end = function() { - var buf = Buffer.alloc(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; - } - - return buf.slice(0, bufIdx); -} - - -// -- Decoding - -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; - -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/bom-handling.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/bom-handling.js deleted file mode 100644 index 1050872..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/bom-handling.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -var BOMChar = '\uFEFF'; - -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; -} - -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; - } - - return this.encoder.write(str); -} - -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); -} - - -//------------------------------------------------------------------------------ - -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; -} - -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; - - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); - } - - this.pass = true; - return res; -} - -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); -} - diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.d.ts b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.d.ts deleted file mode 100644 index 99f200f..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - * REQUIREMENT: This definition is dependent on the @types/node definition. - * Install with `npm install @types/node --save-dev` - *--------------------------------------------------------------------------------------------*/ - -declare module 'iconv-lite' { - // Basic API - export function decode(buffer: Buffer, encoding: string, options?: Options): string; - - export function encode(content: string, encoding: string, options?: Options): Buffer; - - export function encodingExists(encoding: string): boolean; - - // Stream API - export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - // Low-level stream APIs - export function getEncoder(encoding: string, options?: Options): EncoderStream; - - export function getDecoder(encoding: string, options?: Options): DecoderStream; -} - -export interface Options { - stripBOM?: boolean; - addBOM?: boolean; - defaultEncoding?: string; -} - -export interface EncoderStream { - write(str: string): Buffer; - end(): Buffer | undefined; -} - -export interface DecoderStream { - write(buf: Buffer): string; - end(): string | undefined; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.js deleted file mode 100644 index 657701c..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/index.js +++ /dev/null @@ -1,180 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -var bomHandling = require("./bom-handling"), - iconv = module.exports; - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; - -// Characters emitted in case of error. -iconv.defaultCharUnicode = 'ïżœ'; -iconv.defaultCharSingleByte = '?'; - -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. - - var encoder = iconv.getEncoder(encoding, options); - - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} - -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } - - buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. - } - - var decoder = iconv.getDecoder(encoding, options); - - var res = decoder.write(buf); - var trail = decoder.end(); - - return trail ? (res + trail) : res; -} - -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} - -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; - -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = iconv._canonicalizeEncoding(encoding); - - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; - - var codecDef = iconv.encodings[enc]; - - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; - - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; - - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; - - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); - - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; - - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} - -iconv._canonicalizeEncoding = function(encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); -} - -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); - - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); - - return encoder; -} - -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); - - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); - - return decoder; -} - -// Streaming API -// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add -// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. -// If you would like to enable it explicitly, please add the following code to your app: -// > iconv.enableStreamingAPI(require('stream')); -iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { - if (iconv.supportsStreams) - return; - - // Dependency-inject stream module to create IconvLite stream classes. - var streams = require("./streams")(stream_module); - - // Not public API yet, but expose the stream classes. - iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; - - // Streaming API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); - } - - iconv.decodeStream = function decodeStream(encoding, options) { - return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); - } - - iconv.supportsStreams = true; -} - -// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). -var stream_module; -try { - stream_module = require("stream"); -} catch (e) {} - -if (stream_module && stream_module.Transform) { - iconv.enableStreamingAPI(stream_module); - -} else { - // In rare cases where 'stream' module is not available by default, throw a helpful exception. - iconv.encodeStream = iconv.decodeStream = function() { - throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); - }; -} - -if ("Ā" != "\u0100") { - console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/streams.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/streams.js deleted file mode 100644 index a150648..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/lib/streams.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), -// we opt to dependency-inject it instead of creating a hard dependency. -module.exports = function(stream_module) { - var Transform = stream_module.Transform; - - // == Encoder stream ======================================================= - - function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); - } - - IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } - }); - - IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; - } - - - // == Decoder stream ======================================================= - - function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); - } - - IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } - }); - - IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; - } - - return { - IconvLiteEncoderStream: IconvLiteEncoderStream, - IconvLiteDecoderStream: IconvLiteDecoderStream, - }; -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/package.json deleted file mode 100644 index d351115..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "iconv-lite", - "description": "Convert character encodings in pure javascript.", - "version": "0.6.3", - "license": "MIT", - "keywords": [ - "iconv", - "convert", - "charset", - "icu" - ], - "author": "Alexander Shtuchkin ", - "main": "./lib/index.js", - "typings": "./lib/index.d.ts", - "homepage": "https://github.com/ashtuchkin/iconv-lite", - "bugs": "https://github.com/ashtuchkin/iconv-lite/issues", - "repository": { - "type": "git", - "url": "git://github.com/ashtuchkin/iconv-lite.git" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "coverage": "c8 _mocha --grep .", - "test": "mocha --reporter spec --grep ." - }, - "browser": { - "stream": false - }, - "devDependencies": { - "async": "^3.2.0", - "c8": "^7.2.0", - "errto": "^0.2.1", - "iconv": "^2.3.5", - "mocha": "^3.5.3", - "request": "^2.88.2", - "semver": "^6.3.0", - "unorm": "^1.6.0" - }, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/HISTORY.md deleted file mode 100644 index 538ade1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/HISTORY.md +++ /dev/null @@ -1,50 +0,0 @@ -1.1.0 / 2019-04-24 -================== - - * Add `test(string)` function - -1.0.2 / 2019-04-19 -================== - - * Fix JSDoc comment for `parse` function - -1.0.1 / 2018-10-20 -================== - - * Remove left over `parameters` property from class - -1.0.0 / 2018-10-20 -================== - -This major release brings the module back to it's RFC 6838 roots. If you want -a module to parse the `Content-Type` or similar HTTP headers, use the -`content-type` module instead. - - * Drop support for Node.js below 0.8 - * Remove parameter handling, which is outside RFC 6838 scope - * Remove `parse(req)` and `parse(res)` signatures - * perf: enable strict mode - * perf: use a class for object creation - -0.3.0 / 2014-09-07 -================== - - * Support Node.js 0.6 - * Throw error when parameter format invalid on parse - -0.2.0 / 2014-06-18 -================== - - * Add `typer.format()` to format media types - -0.1.0 / 2014-06-17 -================== - - * Accept `req` as argument to `parse` - * Accept `res` as argument to `parse` - * Parse media type with extra LWS between type and first parameter - -0.0.0 / 2014-06-13 -================== - - * Initial implementation diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/LICENSE deleted file mode 100644 index 84441fb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/README.md deleted file mode 100644 index 37edad1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# media-typer - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Simple RFC 6838 media type parser. - -This module will parse a given media type into it's component parts, like type, -subtype, and suffix. A formatter is also provided to put them back together and -the two can be combined to normalize media types into a canonical form. - -If you are looking to parse the string that represents a media type and it's -parameters in HTTP (for example, the `Content-Type` header), use the -[content-type module](https://www.npmjs.com/package/content-type). - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install media-typer -``` - -## API - - - -```js -var typer = require('media-typer') -``` - -### typer.parse(string) - - - -```js -var obj = typer.parse('image/svg+xml') -``` - -Parse a media type string. This will return an object with the following -properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - - - `type`: The type of the media type (always lower case). Example: `'image'` - - - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` - - - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` - -If the given type string is invalid, then a `TypeError` is thrown. - -### typer.format(obj) - - - -```js -var obj = typer.format({ type: 'image', subtype: 'svg', suffix: 'xml' }) -``` - -Format an object into a media type string. This will return a string of the -mime type for the given object. For the properties of the object, see the -documentation for `typer.parse(string)`. - -If any of the given object values are invalid, then a `TypeError` is thrown. - -### typer.test(string) - - - -```js -var valid = typer.test('image/svg+xml') -``` - -Validate a media type string. This will return `true` is the string is a well- -formatted media type, or `false` otherwise. - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/media-typer/master -[coveralls-url]: https://coveralls.io/r/jshttp/media-typer?branch=master -[node-version-image]: https://badgen.net/npm/node/media-typer -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/media-typer -[npm-url]: https://npmjs.org/package/media-typer -[npm-version-image]: https://badgen.net/npm/v/media-typer -[travis-image]: https://badgen.net/travis/jshttp/media-typer/master -[travis-url]: https://travis-ci.org/jshttp/media-typer diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/index.js deleted file mode 100644 index 897cae1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/index.js +++ /dev/null @@ -1,143 +0,0 @@ -/*! - * media-typer - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * RegExp to match type in RFC 6838 - * - * type-name = restricted-name - * subtype-name = restricted-name - * restricted-name = restricted-name-first *126restricted-name-chars - * restricted-name-first = ALPHA / DIGIT - * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / - * "$" / "&" / "-" / "^" / "_" - * restricted-name-chars =/ "." ; Characters before first dot always - * ; specify a facet name - * restricted-name-chars =/ "+" ; Characters after last plus always - * ; specify a structured syntax suffix - * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z - * DIGIT = %x30-39 ; 0-9 - */ -var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ -var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ -var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/ - -/** - * Module exports. - */ - -exports.format = format -exports.parse = parse -exports.test = test - -/** - * Format object to media type. - * - * @param {object} obj - * @return {string} - * @public - */ - -function format (obj) { - if (!obj || typeof obj !== 'object') { - throw new TypeError('argument obj is required') - } - - var subtype = obj.subtype - var suffix = obj.suffix - var type = obj.type - - if (!type || !TYPE_NAME_REGEXP.test(type)) { - throw new TypeError('invalid type') - } - - if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { - throw new TypeError('invalid subtype') - } - - // format as type/subtype - var string = type + '/' + subtype - - // append +suffix - if (suffix) { - if (!TYPE_NAME_REGEXP.test(suffix)) { - throw new TypeError('invalid suffix') - } - - string += '+' + suffix - } - - return string -} - -/** - * Test media type. - * - * @param {string} string - * @return {object} - * @public - */ - -function test (string) { - if (!string) { - throw new TypeError('argument string is required') - } - - if (typeof string !== 'string') { - throw new TypeError('argument string is required to be a string') - } - - return TYPE_REGEXP.test(string.toLowerCase()) -} - -/** - * Parse media type to object. - * - * @param {string} string - * @return {object} - * @public - */ - -function parse (string) { - if (!string) { - throw new TypeError('argument string is required') - } - - if (typeof string !== 'string') { - throw new TypeError('argument string is required to be a string') - } - - var match = TYPE_REGEXP.exec(string.toLowerCase()) - - if (!match) { - throw new TypeError('invalid media type') - } - - var type = match[1] - var subtype = match[2] - var suffix - - // suffix after last + - var index = subtype.lastIndexOf('+') - if (index !== -1) { - suffix = subtype.substr(index + 1) - subtype = subtype.substr(0, index) - } - - return new MediaType(type, subtype, suffix) -} - -/** - * Class for MediaType object. - * @public - */ - -function MediaType (type, subtype, suffix) { - this.type = type - this.subtype = subtype - this.suffix = suffix -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/package.json deleted file mode 100644 index 1dca712..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "media-typer", - "description": "Simple RFC 6838 media type parser and formatter", - "version": "1.1.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "jshttp/media-typer", - "devDependencies": { - "eslint": "5.16.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-markdown": "1.0.0", - "eslint-plugin-node": "8.0.1", - "eslint-plugin-promise": "4.1.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "6.1.4", - "nyc": "14.0.0" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-travis": "nyc --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.d.ts b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.d.ts deleted file mode 100644 index df8f91f..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** -Merges "own" properties from a source to a destination object, including non-enumerable and accessor-defined properties. It retains original values and descriptors, ensuring the destination receives a complete and accurate copy of the source's properties. - -@param destination - The object to receive properties. -@param source - The object providing properties. -@param overwrite - Optional boolean to control overwriting of existing properties. Defaults to true. -@returns The modified destination object. -*/ -declare function mergeDescriptors(destination: T, source: U, overwrite?: boolean): T & U; - -export = mergeDescriptors; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.js deleted file mode 100644 index 51228e5..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/index.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -function mergeDescriptors(destination, source, overwrite = true) { - if (!destination) { - throw new TypeError('The `destination` argument is required.'); - } - - if (!source) { - throw new TypeError('The `source` argument is required.'); - } - - for (const name of Object.getOwnPropertyNames(source)) { - if (!overwrite && Object.hasOwn(destination, name)) { - // Skip descriptor - continue; - } - - // Copy descriptor - const descriptor = Object.getOwnPropertyDescriptor(source, name); - Object.defineProperty(destination, name, descriptor); - } - - return destination; -} - -module.exports = mergeDescriptors; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/license b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/license deleted file mode 100644 index c509d45..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/license +++ /dev/null @@ -1,11 +0,0 @@ -MIT License - -Copyright (c) Jonathan Ong -Copyright (c) Douglas Christopher Wilson -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/package.json deleted file mode 100644 index 9bedb25..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "merge-descriptors", - "version": "2.0.0", - "description": "Merge objects using their property descriptors", - "license": "MIT", - "repository": "sindresorhus/merge-descriptors", - "funding": "https://github.com/sponsors/sindresorhus", - "contributors": [ - "Jonathan Ong ", - "Douglas Christopher Wilson ", - "Mike Grabowski ", - "Sindre Sorhus " - ], - "exports": { - "types": "./index.d.ts", - "default": "./index.js" - }, - "main": "./index.js", - "types": "./index.d.ts", - "sideEffects": false, - "engines": { - "node": ">=18" - }, - "scripts": { - "test": "xo && ava" - }, - "files": [ - "index.js", - "index.d.ts" - ], - "keywords": [ - "merge", - "descriptors", - "object", - "property", - "properties", - "merging", - "getter", - "setter" - ], - "devDependencies": { - "ava": "^5.3.1", - "xo": "^0.56.0" - }, - "xo": { - "rules": { - "unicorn/prefer-module": "off" - } - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/readme.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/readme.md deleted file mode 100644 index 1dee67d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors/readme.md +++ /dev/null @@ -1,55 +0,0 @@ -# merge-descriptors - -> Merge objects using their property descriptors - -## Install - -```sh -npm install merge-descriptors -``` - -## Usage - -```js -import mergeDescriptors from 'merge-descriptors'; - -const thing = { - get name() { - return 'John' - } -} - -const animal = {}; - -mergeDescriptors(animal, thing); - -console.log(animal.name); -//=> 'John' -``` - -## API - -### merge(destination, source, overwrite?) - -Merges "own" properties from a source to a destination object, including non-enumerable and accessor-defined properties. It retains original values and descriptors, ensuring the destination receives a complete and accurate copy of the source's properties. - -Returns the modified destination object. - -#### destination - -Type: `object` - -The object to receive properties. - -#### source - -Type: `object` - -The object providing properties. - -#### overwrite - -Type: `boolean`\ -Default: `true` - -A boolean to control overwriting of existing properties. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/HISTORY.md deleted file mode 100644 index fb35bec..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,541 +0,0 @@ -1.54.0 / 2025-03-17 -=================== - - * Update mime type for DCM format (#362) - * mark application/octet-stream as compressible (#163) - * Fix typo in application/x-zip-compressed mimetype (#359) - * Add mime-type for Jupyter notebooks (#282) - * Add Google Drive MIME types (#311) - * Add .blend file type (#338) - * Add support for the FBX file extension (#342) - * Add Adobe DNG file (#340) - * Add Procreate Brush and Brush Set file Types (#339) - * Add support for Procreate Dreams (#341) - * replace got with undici (#352) - * Added extensions list for model/step (#293) - * Add m4b as a type of audio/mp4 (#357) - * windows 11 application/x-zip-compressed (#346) - * add dotLottie mime type (#351) - * Add some MS-related extensions and types (#336) - -1.53.0 / 2024-07-12 -=================== - - * Add extension `.sql` to `application/sql` - * Add extensions `.aac` and `.adts` to `audio/aac` - * Add extensions `.js` and `.mjs` to `text/javascript` - * Add extensions for `application/mp4` from IANA - * Add extensions from IANA for more MIME types - * Add Microsoft app installer types and extensions - * Add new upstream MIME types - * Fix extensions for `text/markdown` to match IANA - * Remove extension `.mjs` from `application/javascript` - * Remove obsolete MIME types from IANA data - -1.52.0 / 2022-02-21 -=================== - - * Add extensions from IANA for more `image/*` types - * Add extension `.asc` to `application/pgp-keys` - * Add extensions to various XML types - * Add new upstream MIME types - -1.51.0 / 2021-11-08 -=================== - - * Add new upstream MIME types - * Mark `image/vnd.microsoft.icon` as compressible - * Mark `image/vnd.ms-dds` as compressible - -1.50.0 / 2021-09-15 -=================== - - * Add deprecated iWorks mime types and extensions - * Add new upstream MIME types - -1.49.0 / 2021-07-26 -=================== - - * Add extension `.trig` to `application/trig` - * Add new upstream MIME types - -1.48.0 / 2021-05-30 -=================== - - * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - * Add new upstream MIME types - * Mark `text/yaml` as compressible - -1.47.0 / 2021-04-01 -=================== - - * Add new upstream MIME types - * Remove ambiguous extensions from IANA for `application/*+xml` types - * Update primary extension to `.es` for `application/ecmascript` - -1.46.0 / 2021-02-13 -=================== - - * Add extension `.amr` to `audio/amr` - * Add extension `.m4s` to `video/iso.segment` - * Add extension `.opus` to `audio/ogg` - * Add new upstream MIME types - -1.45.0 / 2020-09-22 -=================== - - * Add `application/ubjson` with extension `.ubj` - * Add `image/avif` with extension `.avif` - * Add `image/ktx2` with extension `.ktx2` - * Add extension `.dbf` to `application/vnd.dbf` - * Add extension `.rar` to `application/vnd.rar` - * Add extension `.td` to `application/urc-targetdesc+xml` - * Add new upstream MIME types - * Fix extension of `application/vnd.apple.keynote` to be `.key` - -1.44.0 / 2020-04-22 -=================== - - * Add charsets from IANA - * Add extension `.cjs` to `application/node` - * Add new upstream MIME types - -1.43.0 / 2020-01-05 -=================== - - * Add `application/x-keepass2` with extension `.kdbx` - * Add extension `.mxmf` to `audio/mobile-xmf` - * Add extensions from IANA for `application/*+xml` types - * Add new upstream MIME types - -1.42.0 / 2019-09-25 -=================== - - * Add `image/vnd.ms-dds` with extension `.dds` - * Add new upstream MIME types - * Remove compressible from `multipart/mixed` - -1.41.0 / 2019-08-30 -=================== - - * Add new upstream MIME types - * Add `application/toml` with extension `.toml` - * Mark `font/ttf` as compressible - -1.40.0 / 2019-04-20 -=================== - - * Add extensions from IANA for `model/*` types - * Add `text/mdx` with extension `.mdx` - -1.39.0 / 2019-04-04 -=================== - - * Add extensions `.siv` and `.sieve` to `application/sieve` - * Add new upstream MIME types - -1.38.0 / 2019-02-04 -=================== - - * Add extension `.nq` to `application/n-quads` - * Add extension `.nt` to `application/n-triples` - * Add new upstream MIME types - * Mark `text/less` as compressible - -1.37.0 / 2018-10-19 -=================== - - * Add extensions to HEIC image types - * Add new upstream MIME types - -1.36.0 / 2018-08-20 -=================== - - * Add Apple file extensions from IANA - * Add extensions from IANA for `image/*` types - * Add new upstream MIME types - -1.35.0 / 2018-07-15 -=================== - - * Add extension `.owl` to `application/rdf+xml` - * Add new upstream MIME types - - Removes extension `.woff` from `application/font-woff` - -1.34.0 / 2018-06-03 -=================== - - * Add extension `.csl` to `application/vnd.citationstyles.style+xml` - * Add extension `.es` to `application/ecmascript` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/turtle` - * Mark all XML-derived types as compressible - -1.33.0 / 2018-02-15 -=================== - - * Add extensions from IANA for `message/*` types - * Add new upstream MIME types - * Fix some incorrect OOXML types - * Remove `application/font-woff2` - -1.32.0 / 2017-11-29 -=================== - - * Add new upstream MIME types - * Update `text/hjson` to registered `application/hjson` - * Add `text/shex` with extension `.shex` - -1.31.0 / 2017-10-25 -=================== - - * Add `application/raml+yaml` with extension `.raml` - * Add `application/wasm` with extension `.wasm` - * Add new `font` type from IANA - * Add new upstream font extensions - * Add new upstream MIME types - * Add extensions for JPEG-2000 images - -1.30.0 / 2017-08-27 -=================== - - * Add `application/vnd.ms-outlook` - * Add `application/x-arj` - * Add extension `.mjs` to `application/javascript` - * Add glTF types and extensions - * Add new upstream MIME types - * Add `text/x-org` - * Add VirtualBox MIME types - * Fix `source` records for `video/*` types that are IANA - * Update `font/opentype` to registered `font/otf` - -1.29.0 / 2017-07-10 -=================== - - * Add `application/fido.trusted-apps+json` - * Add extension `.wadl` to `application/vnd.sun.wadl+xml` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/css` - -1.28.0 / 2017-05-14 -=================== - - * Add new upstream MIME types - * Add extension `.gz` to `application/gzip` - * Update extensions `.md` and `.markdown` to be `text/markdown` - -1.27.0 / 2017-03-16 -=================== - - * Add new upstream MIME types - * Add `image/apng` with extension `.apng` - -1.26.0 / 2017-01-14 -=================== - - * Add new upstream MIME types - * Add extension `.geojson` to `application/geo+json` - -1.25.0 / 2016-11-11 -=================== - - * Add new upstream MIME types - -1.24.0 / 2016-09-18 -=================== - - * Add `audio/mp3` - * Add new upstream MIME types - -1.23.0 / 2016-05-01 -=================== - - * Add new upstream MIME types - * Add extension `.3gpp` to `audio/3gpp` - -1.22.0 / 2016-02-15 -=================== - - * Add `text/slim` - * Add extension `.rng` to `application/xml` - * Add new upstream MIME types - * Fix extension of `application/dash+xml` to be `.mpd` - * Update primary extension to `.m4a` for `audio/mp4` - -1.21.0 / 2016-01-06 -=================== - - * Add Google document types - * Add new upstream MIME types - -1.20.0 / 2015-11-10 -=================== - - * Add `text/x-suse-ymp` - * Add new upstream MIME types - -1.19.0 / 2015-09-17 -=================== - - * Add `application/vnd.apple.pkpass` - * Add new upstream MIME types - -1.18.0 / 2015-09-03 -=================== - - * Add new upstream MIME types - -1.17.0 / 2015-08-13 -=================== - - * Add `application/x-msdos-program` - * Add `audio/g711-0` - * Add `image/vnd.mozilla.apng` - * Add extension `.exe` to `application/x-msdos-program` - -1.16.0 / 2015-07-29 -=================== - - * Add `application/vnd.uri-map` - -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/LICENSE deleted file mode 100644 index 0751cb1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/README.md deleted file mode 100644 index ee93fa0..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][ci-image]][ci-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a large database of mime types and information about them. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- https://www.iana.org/assignments/media-types/media-types.xhtml -- https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- https://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you intend to use this in a web browser, you can conveniently access the JSON file via [jsDelivr](https://www.jsdelivr.com/), a popular CDN (Content Delivery Network). To ensure stability and compatibility, it is advisable to specify [a release tag](https://github.com/jshttp/mime-db/tags) instead of using the 'master' branch. This is because the JSON file's format might change in future updates, and relying on a specific release tag will prevent potential issues arising from these changes. - -``` -https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json -``` - -## Usage - -```js -var db = require('mime-db') - -// grab data on .js files -var data = db['application/javascript'] -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](https://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](https://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Note on MIME Type Data and Semver - -This package considers the programmatic api as the semver compatibility. This means the MIME type resolution is *not* considered -in the semver bumps. This means that if you want to pin your `mime-db` data you will need to do it in your application. While -this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is a breaking change. - -## Contributing - -The primary way to contribute to this database is by updating the data in -one of the upstream sources. The database is updated from the upstreams -periodically and will pull in any changes. - -### Registering Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](https://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -### Direct Inclusion - -If that is not possible / feasible, they can be added directly here as a -"custom" type. To do this, it is required to have a primary source that -definitively lists the media type. If an extension is going to be listed as -associated with this media type, the source must definitively link the -media type and extension as well. - -To edit the database, only make PRs against `src/custom-types.json` or -`src/custom-suffix.json`. - -The `src/custom-types.json` file is a JSON object with the MIME type as the -keys and the values being an object with the following keys: - -- `compressible` - leave out if you don't know, otherwise `true`/`false` to - indicate whether the data represented by the type is typically compressible. -- `extensions` - include an array of file extensions that are associated with - the type. -- `notes` - human-readable notes about the type, typically what the type is. -- `sources` - include an array of URLs of where the MIME type and the associated - extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); - links to type aggregating sites and Wikipedia are _not acceptable_. - -To update the build, run `npm run build`. - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci -[ci-url]: https://github.com/jshttp/mime-db/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://badgen.net/npm/node/mime-db -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-db -[npm-url]: https://npmjs.org/package/mime-db -[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/db.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/db.json deleted file mode 100644 index 7e74733..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/db.json +++ /dev/null @@ -1,9342 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/3gpp-ims+xml": { - "source": "iana", - "compressible": true - }, - "application/3gpphal+json": { - "source": "iana", - "compressible": true - }, - "application/3gpphalforms+json": { - "source": "iana", - "compressible": true - }, - "application/a2l": { - "source": "iana" - }, - "application/ace+cbor": { - "source": "iana" - }, - "application/ace+json": { - "source": "iana", - "compressible": true - }, - "application/ace-groupcomm+cbor": { - "source": "iana" - }, - "application/ace-trl+cbor": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/activity+json": { - "source": "iana", - "compressible": true - }, - "application/aif+cbor": { - "source": "iana" - }, - "application/aif+json": { - "source": "iana", - "compressible": true - }, - "application/alto-cdni+json": { - "source": "iana", - "compressible": true - }, - "application/alto-cdnifilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-propmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-propmapparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-tips+json": { - "source": "iana", - "compressible": true - }, - "application/alto-tipsparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamcontrol+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamparams+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/appinstaller": { - "compressible": false, - "extensions": ["appinstaller"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/appx": { - "compressible": false, - "extensions": ["appx"] - }, - "application/appxbundle": { - "compressible": false, - "extensions": ["appxbundle"] - }, - "application/at+jwt": { - "source": "iana" - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomdeleted"] - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomsvc"] - }, - "application/atsc-dwd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dwd"] - }, - "application/atsc-dynamic-event-message": { - "source": "iana" - }, - "application/atsc-held+xml": { - "source": "iana", - "compressible": true, - "extensions": ["held"] - }, - "application/atsc-rdt+json": { - "source": "iana", - "compressible": true - }, - "application/atsc-rsat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsat"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana", - "compressible": true - }, - "application/automationml-aml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["aml"] - }, - "application/automationml-amlx+zip": { - "source": "iana", - "compressible": false, - "extensions": ["amlx"] - }, - "application/bacnet-xdd+zip": { - "source": "iana", - "compressible": false - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/bufr": { - "source": "iana" - }, - "application/c2pa": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xcs"] - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/captive+json": { - "source": "iana", - "compressible": true - }, - "application/cbor": { - "source": "iana" - }, - "application/cbor-seq": { - "source": "iana" - }, - "application/cccex": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana", - "compressible": true - }, - "application/ccxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ccxml"] - }, - "application/cda+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/cdfx+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdfx"] - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cdni": { - "source": "iana" - }, - "application/ce+cbor": { - "source": "iana" - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana", - "compressible": true - }, - "application/cellml+xml": { - "source": "iana", - "compressible": true - }, - "application/cfw": { - "source": "iana" - }, - "application/cid-edhoc+cbor-seq": { - "source": "iana" - }, - "application/city+json": { - "source": "iana", - "compressible": true - }, - "application/city+json-seq": { - "source": "iana" - }, - "application/clr": { - "source": "iana" - }, - "application/clue+xml": { - "source": "iana", - "compressible": true - }, - "application/clue_info+xml": { - "source": "iana", - "compressible": true - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana", - "compressible": true - }, - "application/coap-eap": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/coap-payload": { - "source": "iana" - }, - "application/commonground": { - "source": "iana" - }, - "application/concise-problem-details+cbor": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/cose": { - "source": "iana" - }, - "application/cose-key": { - "source": "iana" - }, - "application/cose-key-set": { - "source": "iana" - }, - "application/cose-x509": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cpl"] - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana", - "compressible": true - }, - "application/cstadata+xml": { - "source": "iana", - "compressible": true - }, - "application/csvm+json": { - "source": "iana", - "compressible": true - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cwl": { - "source": "iana", - "extensions": ["cwl"] - }, - "application/cwl+json": { - "source": "iana", - "compressible": true - }, - "application/cwl+yaml": { - "source": "iana" - }, - "application/cwt": { - "source": "iana" - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpd"] - }, - "application/dash-patch+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "compressible": true, - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana", - "compressible": true - }, - "application/dicom": { - "source": "iana", - "extensions": ["dcm"] - }, - "application/dicom+json": { - "source": "iana", - "compressible": true - }, - "application/dicom+xml": { - "source": "iana", - "compressible": true - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/dns+json": { - "source": "iana", - "compressible": true - }, - "application/dns-message": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dbk"] - }, - "application/dots+cbor": { - "source": "iana" - }, - "application/dpop+jwt": { - "source": "iana" - }, - "application/dskpp+xml": { - "source": "iana", - "compressible": true - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/eat+cwt": { - "source": "iana" - }, - "application/eat+jwt": { - "source": "iana" - }, - "application/eat-bun+cbor": { - "source": "iana" - }, - "application/eat-bun+json": { - "source": "iana", - "compressible": true - }, - "application/eat-ucs+cbor": { - "source": "iana" - }, - "application/eat-ucs+json": { - "source": "iana", - "compressible": true - }, - "application/ecmascript": { - "source": "apache", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edhoc+cbor-seq": { - "source": "iana" - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/efi": { - "source": "iana" - }, - "application/elm+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/elm+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.cap+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/emergencycalldata.comment+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.control+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.deviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.ecall.msd": { - "source": "iana" - }, - "application/emergencycalldata.legacyesn+json": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.providerinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.serviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.subscriberinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.veds+xml": { - "source": "iana", - "compressible": true - }, - "application/emma+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emotionml"] - }, - "application/encaprtp": { - "source": "iana" - }, - "application/entity-statement+jwt": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana", - "compressible": true - }, - "application/epub+zip": { - "source": "iana", - "compressible": false, - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/expect-ct-report+json": { - "source": "iana", - "compressible": true - }, - "application/express": { - "source": "iana", - "extensions": ["exp"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/fdt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fdt"] - }, - "application/fhir+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fhir+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fido.trusted-apps+json": { - "compressible": true - }, - "application/fits": { - "source": "iana" - }, - "application/flexfec": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false - }, - "application/framework-attributes+xml": { - "source": "iana", - "compressible": true - }, - "application/geo+json": { - "source": "iana", - "compressible": true, - "extensions": ["geojson"] - }, - "application/geo+json-seq": { - "source": "iana" - }, - "application/geopackage+sqlite3": { - "source": "iana" - }, - "application/geopose+json": { - "source": "iana", - "compressible": true - }, - "application/geoxacml+json": { - "source": "iana", - "compressible": true - }, - "application/geoxacml+xml": { - "source": "iana", - "compressible": true - }, - "application/gltf-buffer": { - "source": "iana" - }, - "application/gml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["gml"] - }, - "application/gnap-binding-jws": { - "source": "iana" - }, - "application/gnap-binding-jwsd": { - "source": "iana" - }, - "application/gnap-binding-rotation-jws": { - "source": "iana" - }, - "application/gnap-binding-rotation-jwsd": { - "source": "iana" - }, - "application/gpx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["gpx"] - }, - "application/grib": { - "source": "iana" - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false, - "extensions": ["gz"] - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana", - "compressible": true - }, - "application/hjson": { - "extensions": ["hjson"] - }, - "application/hl7v2+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pkg-reply+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana", - "compressible": true, - "extensions": ["its"] - }, - "application/java-archive": { - "source": "iana", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "apache", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jf2feed+json": { - "source": "iana", - "compressible": true - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/jscalendar+json": { - "source": "iana", - "compressible": true - }, - "application/jscontact+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jsonpath": { - "source": "iana" - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+jwt": { - "source": "iana" - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana", - "compressible": true - }, - "application/kpml-response+xml": { - "source": "iana", - "compressible": true - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/lgr+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lgr"] - }, - "application/link-format": { - "source": "iana" - }, - "application/linkset": { - "source": "iana" - }, - "application/linkset+json": { - "source": "iana", - "compressible": true - }, - "application/load-control+xml": { - "source": "iana", - "compressible": true - }, - "application/logout+jwt": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana", - "compressible": true - }, - "application/lpf+zip": { - "source": "iana", - "compressible": false - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mads"] - }, - "application/manifest+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana", - "compressible": true - }, - "application/mathml-presentation+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-deregister+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-envelope+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-protection-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-reception-report+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-schedule+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-user-service-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpf"] - }, - "application/media_control+xml": { - "source": "iana", - "compressible": true - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "compressible": true, - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "compressible": true, - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mipc": { - "source": "iana" - }, - "application/missing-blocks+cbor-seq": { - "source": "iana" - }, - "application/mmt-aei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["maei"] - }, - "application/mmt-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musd"] - }, - "application/mods+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4","mpg4","mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana", - "compressible": true - }, - "application/mrb-publish+xml": { - "source": "iana", - "compressible": true - }, - "application/msc-ivr+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msc-mixer+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msix": { - "compressible": false, - "extensions": ["msix"] - }, - "application/msixbundle": { - "compressible": false, - "extensions": ["msixbundle"] - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mud+json": { - "source": "iana", - "compressible": true - }, - "application/multipart-core": { - "source": "iana" - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/n-quads": { - "source": "iana", - "extensions": ["nq"] - }, - "application/n-triples": { - "source": "iana", - "extensions": ["nt"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-groupinfo": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana", - "compressible": true - }, - "application/node": { - "source": "iana", - "extensions": ["cjs"] - }, - "application/nss": { - "source": "iana" - }, - "application/oauth-authz-req+jwt": { - "source": "iana" - }, - "application/oblivious-dns-message": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": true, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odm+xml": { - "source": "iana", - "compressible": true - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/ohttp-keys": { - "source": "iana" - }, - "application/omdoc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg","one","onea"] - }, - "application/opc-nodeset+xml": { - "source": "iana", - "compressible": true - }, - "application/oscore": { - "source": "iana" - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p21": { - "source": "iana" - }, - "application/p21+zip": { - "source": "iana", - "compressible": false - }, - "application/p2p-overlay+xml": { - "source": "iana", - "compressible": true, - "extensions": ["relo"] - }, - "application/parityfec": { - "source": "iana" - }, - "application/passport": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pem-certificate-chain": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana", - "extensions": ["asc"] - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["sig","asc"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pidf-diff+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs12": { - "source": "iana" - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkcs8-encrypted": { - "source": "iana" - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/ppsp-tracker+json": { - "source": "iana", - "compressible": true - }, - "application/private-token-issuer-directory": { - "source": "iana" - }, - "application/private-token-request": { - "source": "iana" - }, - "application/private-token-response": { - "source": "iana" - }, - "application/problem+json": { - "source": "iana", - "compressible": true - }, - "application/problem+xml": { - "source": "iana", - "compressible": true - }, - "application/provenance+xml": { - "source": "iana", - "compressible": true, - "extensions": ["provx"] - }, - "application/provided-claims+jwt": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.cyn": { - "source": "iana", - "charset": "7-BIT" - }, - "application/prs.hpub+zip": { - "source": "iana", - "compressible": false - }, - "application/prs.implied-document+xml": { - "source": "iana", - "compressible": true - }, - "application/prs.implied-executable": { - "source": "iana" - }, - "application/prs.implied-object+json": { - "source": "iana", - "compressible": true - }, - "application/prs.implied-object+json-seq": { - "source": "iana" - }, - "application/prs.implied-object+yaml": { - "source": "iana" - }, - "application/prs.implied-structure": { - "source": "iana" - }, - "application/prs.mayfile": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.vcfbzip2": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xsf"] - }, - "application/pskc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pskcxml"] - }, - "application/pvd+json": { - "source": "iana", - "compressible": true - }, - "application/qsig": { - "source": "iana" - }, - "application/raml+yaml": { - "compressible": true, - "extensions": ["raml"] - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf","owl"] - }, - "application/reginfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "apache" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resolve-response+jwt": { - "source": "iana" - }, - "application/resource-lists+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rld"] - }, - "application/rfc+xml": { - "source": "iana", - "compressible": true - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana", - "compressible": true - }, - "application/rls-services+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rs"] - }, - "application/route-apd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rapd"] - }, - "application/route-s-tsid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sls"] - }, - "application/route-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rusd"] - }, - "application/rpki-checklist": { - "source": "iana" - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-publication": { - "source": "iana" - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-signed-tal": { - "source": "iana" - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana", - "compressible": true - }, - "application/samlmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/sarif+json": { - "source": "iana", - "compressible": true - }, - "application/sarif-external-properties+json": { - "source": "iana", - "compressible": true - }, - "application/sbe": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana", - "compressible": true - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/secevent+jwt": { - "source": "iana" - }, - "application/senml+cbor": { - "source": "iana" - }, - "application/senml+json": { - "source": "iana", - "compressible": true - }, - "application/senml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["senmlx"] - }, - "application/senml-etch+cbor": { - "source": "iana" - }, - "application/senml-etch+json": { - "source": "iana", - "compressible": true - }, - "application/senml-exi": { - "source": "iana" - }, - "application/sensml+cbor": { - "source": "iana" - }, - "application/sensml+json": { - "source": "iana", - "compressible": true - }, - "application/sensml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sensmlx"] - }, - "application/sensml-exi": { - "source": "iana" - }, - "application/sep+xml": { - "source": "iana", - "compressible": true - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana", - "extensions": ["siv","sieve"] - }, - "application/simple-filter+xml": { - "source": "iana", - "compressible": true - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/sipc": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "apache" - }, - "application/smil+xml": { - "source": "iana", - "compressible": true, - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "compressible": true, - "extensions": ["srx"] - }, - "application/spdx+json": { - "source": "iana", - "compressible": true - }, - "application/spirits-event+xml": { - "source": "iana", - "compressible": true - }, - "application/sql": { - "source": "iana", - "extensions": ["sql"] - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ssdl"] - }, - "application/sslkeylogfile": { - "source": "iana" - }, - "application/ssml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ssml"] - }, - "application/st2110-41": { - "source": "iana" - }, - "application/stix+json": { - "source": "iana", - "compressible": true - }, - "application/stratum": { - "source": "iana" - }, - "application/swid+cbor": { - "source": "iana" - }, - "application/swid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["swidtag"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/taxii+json": { - "source": "iana", - "compressible": true - }, - "application/td+json": { - "source": "iana", - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tei","teicorpus"] - }, - "application/tetra_isi": { - "source": "iana" - }, - "application/thraud+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/tlsrpt+gzip": { - "source": "iana" - }, - "application/tlsrpt+json": { - "source": "iana", - "compressible": true - }, - "application/tm+json": { - "source": "iana", - "compressible": true - }, - "application/tnauthlist": { - "source": "iana" - }, - "application/toc+cbor": { - "source": "iana" - }, - "application/token-introspection+jwt": { - "source": "iana" - }, - "application/toml": { - "source": "iana", - "compressible": true, - "extensions": ["toml"] - }, - "application/trickle-ice-sdpfrag": { - "source": "iana" - }, - "application/trig": { - "source": "iana", - "extensions": ["trig"] - }, - "application/trust-chain+json": { - "source": "iana", - "compressible": true - }, - "application/trust-mark+jwt": { - "source": "iana" - }, - "application/trust-mark-delegation+jwt": { - "source": "iana" - }, - "application/ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ttml"] - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/tzif": { - "source": "iana" - }, - "application/tzif-leap": { - "source": "iana" - }, - "application/ubjson": { - "compressible": false, - "extensions": ["ubj"] - }, - "application/uccs+cbor": { - "source": "iana" - }, - "application/ujcs+json": { - "source": "iana", - "compressible": true - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/urc-ressheet+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsheet"] - }, - "application/urc-targetdesc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["td"] - }, - "application/urc-uisocketdesc+xml": { - "source": "iana", - "compressible": true - }, - "application/vc": { - "source": "iana" - }, - "application/vc+cose": { - "source": "iana" - }, - "application/vc+jwt": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana", - "compressible": true - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.1000minds.decision-model+xml": { - "source": "iana", - "compressible": true, - "extensions": ["1km"] - }, - "application/vnd.1ob": { - "source": "iana" - }, - "application/vnd.3gpp-prose+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc3a+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc3ach+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc3ch+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc8+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-v2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.5gnas": { - "source": "iana" - }, - "application/vnd.3gpp.5gsa2x": { - "source": "iana" - }, - "application/vnd.3gpp.5gsa2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.5gsv2x": { - "source": "iana" - }, - "application/vnd.3gpp.5gsv2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.access-transfer-events+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.crs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.current-location-discovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gmop+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gtpc": { - "source": "iana" - }, - "application/vnd.3gpp.interworking-data": { - "source": "iana" - }, - "application/vnd.3gpp.lpp": { - "source": "iana" - }, - "application/vnd.3gpp.mc-signalling-ear": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-payload": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-regroup+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-signalling": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-floor-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-regroup+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-signed+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-init-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-regroup+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-transmission-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mid-call+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ngap": { - "source": "iana" - }, - "application/vnd.3gpp.pfcp": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.pinapp-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.s1ap": { - "source": "iana" - }, - "application/vnd.3gpp.seal-group-doc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-network-qos-management-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-ue-config-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-unicast-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.seal-user-profile-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.sms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-ext+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.state-and-event-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.v2x": { - "source": "iana" - }, - "application/vnd.3gpp.vae-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3lightssoftware.imagescal": { - "source": "iana" - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acm.addressxfer+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.acm.chatbot+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "compressible": false, - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "apache", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata-pagedef": { - "source": "iana" - }, - "application/vnd.afpc.cmoca-cmresource": { - "source": "iana" - }, - "application/vnd.afpc.foca-charset": { - "source": "iana" - }, - "application/vnd.afpc.foca-codedfont": { - "source": "iana" - }, - "application/vnd.afpc.foca-codepage": { - "source": "iana" - }, - "application/vnd.afpc.modca": { - "source": "iana" - }, - "application/vnd.afpc.modca-cmtable": { - "source": "iana" - }, - "application/vnd.afpc.modca-formdef": { - "source": "iana" - }, - "application/vnd.afpc.modca-mediummap": { - "source": "iana" - }, - "application/vnd.afpc.modca-objectcontainer": { - "source": "iana" - }, - "application/vnd.afpc.modca-overlay": { - "source": "iana" - }, - "application/vnd.afpc.modca-pagesegment": { - "source": "iana" - }, - "application/vnd.age": { - "source": "iana", - "extensions": ["age"] - }, - "application/vnd.ah-barcode": { - "source": "apache" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amadeus+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.amazon.mobi8-ebook": { - "source": "iana" - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.android.ota": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anki": { - "source": "iana" - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.arrow.file": { - "source": "iana" - }, - "application/vnd.apache.arrow.stream": { - "source": "iana" - }, - "application/vnd.apache.parquet": { - "source": "iana" - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.apexlang": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.aplextor.warrp+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apothekende.reservation+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpkg"] - }, - "application/vnd.apple.keynote": { - "source": "iana", - "extensions": ["key"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.apple.numbers": { - "source": "iana", - "extensions": ["numbers"] - }, - "application/vnd.apple.pages": { - "source": "iana", - "extensions": ["pages"] - }, - "application/vnd.apple.pkpass": { - "compressible": false, - "extensions": ["pkpass"] - }, - "application/vnd.arastra.swi": { - "source": "apache" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artisan+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autodesk.fbx": { - "extensions": ["fbx"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avalon+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.avistar+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["bmml"] - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.banana-accounting": { - "source": "iana" - }, - "application/vnd.bbf.usp.error": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.belightsoft.lhzd+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.belightsoft.lhzl+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.bint.med-content": { - "source": "iana" - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.blink-idb-value-wrapper": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.bpf": { - "source": "iana" - }, - "application/vnd.bpf3": { - "source": "iana" - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.byu.uapi+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bzip3": { - "source": "iana" - }, - "application/vnd.c3voc.schedule+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.capasystems-pg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdxml"] - }, - "application/vnd.chess-pgn": { - "source": "iana" - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.ciedi": { - "source": "iana" - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana", - "compressible": true, - "extensions": ["csl"] - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { - "source": "iana" - }, - "application/vnd.cncf.helm.chart.provenance.v1.prov": { - "source": "iana" - }, - "application/vnd.cncf.helm.config.v1+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet-template": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.comicbook+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.comicbook-rar": { - "source": "iana" - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.coreos.ignition+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wbs"] - }, - "application/vnd.cryptii.pipe+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.crypto-shade-file": { - "source": "iana" - }, - "application/vnd.cryptomator.encrypted": { - "source": "iana" - }, - "application/vnd.cryptomator.vault": { - "source": "iana" - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.cyclonedx+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cyclonedx+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.d2l.coursepackage1p0+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.d3m-dataset": { - "source": "iana" - }, - "application/vnd.d3m-problem": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.datalog": { - "source": "iana" - }, - "application/vnd.datapackage+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dataresource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dbf": { - "source": "iana", - "extensions": ["dbf"] - }, - "application/vnd.dcmp+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dcmp"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume.movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.drive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbisl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecip.rlp": { - "source": "iana" - }, - "application/vnd.eclipse.ditto+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.efi.img": { - "source": "iana" - }, - "application/vnd.efi.iso": { - "source": "iana" - }, - "application/vnd.eln+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.erofs": { - "source": "iana" - }, - "application/vnd.espass-espass+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "compressible": true, - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.cug+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.sci+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eu.kasparian.car+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.evolv.ecig.profile": { - "source": "iana" - }, - "application/vnd.evolv.ecig.settings": { - "source": "iana" - }, - "application/vnd.evolv.ecig.theme": { - "source": "iana" - }, - "application/vnd.exstream-empower+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.exstream-package": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.familysearch.gedcom+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "apache", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.fdsn.stationxml+xml": { - "source": "iana", - "charset": "XML-BASED", - "compressible": true - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.ficlab.flb+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.filmit.zfc": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.firemonkeys.cloudcell": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.freelog.comic": { - "source": "iana" - }, - "application/vnd.frogans.fnc": { - "source": "apache", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "apache", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujifilm.fb.docuworks": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.binder": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.jfi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.futoin+cbor": { - "source": "iana" - }, - "application/vnd.futoin+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.ga4gh.passport+jwt": { - "source": "iana" - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.genozip": { - "source": "iana" - }, - "application/vnd.gentics.grd+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.gentoo.catmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.gentoo.ebuild": { - "source": "iana" - }, - "application/vnd.gentoo.eclass": { - "source": "iana" - }, - "application/vnd.gentoo.gpkg": { - "source": "iana" - }, - "application/vnd.gentoo.manifest": { - "source": "iana" - }, - "application/vnd.gentoo.pkgmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.gentoo.xpak": { - "source": "iana" - }, - "application/vnd.geo+json": { - "source": "apache", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.pinboard": { - "source": "iana" - }, - "application/vnd.geogebra.slides": { - "source": "iana", - "extensions": ["ggs"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.gnu.taler.exchange+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.gnu.taler.merchant+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.google-apps.audio": {}, - "application/vnd.google-apps.document": { - "compressible": false, - "extensions": ["gdoc"] - }, - "application/vnd.google-apps.drawing": { - "compressible": false, - "extensions": ["gdraw"] - }, - "application/vnd.google-apps.drive-sdk": { - "compressible": false - }, - "application/vnd.google-apps.file": {}, - "application/vnd.google-apps.folder": { - "compressible": false - }, - "application/vnd.google-apps.form": { - "compressible": false, - "extensions": ["gform"] - }, - "application/vnd.google-apps.fusiontable": {}, - "application/vnd.google-apps.jam": { - "compressible": false, - "extensions": ["gjam"] - }, - "application/vnd.google-apps.mail-layout": {}, - "application/vnd.google-apps.map": { - "compressible": false, - "extensions": ["gmap"] - }, - "application/vnd.google-apps.photo": {}, - "application/vnd.google-apps.presentation": { - "compressible": false, - "extensions": ["gslides"] - }, - "application/vnd.google-apps.script": { - "compressible": false, - "extensions": ["gscript"] - }, - "application/vnd.google-apps.shortcut": {}, - "application/vnd.google-apps.site": { - "compressible": false, - "extensions": ["gsite"] - }, - "application/vnd.google-apps.spreadsheet": { - "compressible": false, - "extensions": ["gsheet"] - }, - "application/vnd.google-apps.unknown": {}, - "application/vnd.google-apps.video": {}, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdcf"] - }, - "application/vnd.gpxsee.map+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "compressible": true, - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.hdt": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.hsl": { - "source": "iana" - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyper+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyper-item+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "apache" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "apache", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.imagemeter.folder+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.imagemeter.image+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.informix-visionary": { - "source": "apache" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.ipfs.ipns-record": { - "source": "iana" - }, - "application/vnd.ipld.car": { - "source": "iana" - }, - "application/vnd.ipld.dag-cbor": { - "source": "iana" - }, - "application/vnd.ipld.dag-json": { - "source": "iana" - }, - "application/vnd.ipld.raw": { - "source": "iana" - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.iso11783-10+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kdl": { - "source": "iana" - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.keyman.kmp+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.keyman.kmx": { - "source": "iana" - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las": { - "source": "iana" - }, - "application/vnd.las.las+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.las.las+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lasxml"] - }, - "application/vnd.laszip": { - "source": "iana" - }, - "application/vnd.ldev.productlicensing": { - "source": "iana" - }, - "application/vnd.leap+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.liberty-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lbe"] - }, - "application/vnd.logipipe.circuit+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.loom": { - "source": "iana" - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.mapbox-vector-tile": { - "source": "iana", - "extensions": ["mvt"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxar.archive.3tz+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.mdl": { - "source": "iana" - }, - "application/vnd.mdl-mbsdf": { - "source": "iana" - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.medicalholodeck.recordxr": { - "source": "iana" - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mermaid": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.microsoft.windows.thumbnail-cache": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.modl": { - "source": "iana" - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-outlook": { - "compressible": false, - "extensions": ["msg"] - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printdevicecapabilities+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-printschematicket+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-visio.viewer": { - "extensions": ["vdx"] - }, - "application/vnd.ms-windows.devicepairing": { - "source": "iana" - }, - "application/vnd.ms-windows.nwprinting.oob": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-windows.wsd.oob": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msgpack": { - "source": "iana" - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.nacamar.ybrid+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nato.bindingdataobject+cbor": { - "source": "iana" - }, - "application/vnd.nato.bindingdataobject+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nato.bindingdataobject+xml": { - "source": "iana", - "compressible": true, - "extensions": ["bdo"] - }, - "application/vnd.nato.openxmlformats-package.iepd+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nearst.inv+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nebumind.line": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nimn": { - "source": "iana" - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ac"] - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "apache", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oai.workflows": { - "source": "iana" - }, - "application/vnd.oai.workflows+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oai.workflows+yaml": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.base": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "apache", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-master-template": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.ocf+cbor": { - "source": "iana" - }, - "application/vnd.oci.image.manifest.v1+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+cbor": { - "source": "iana" - }, - "application/vnd.oma.lwm2m+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+tlv": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.omads-email+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-file+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-folder+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.onepager": { - "source": "iana" - }, - "application/vnd.onepagertamp": { - "source": "iana" - }, - "application/vnd.onepagertamx": { - "source": "iana" - }, - "application/vnd.onepagertat": { - "source": "iana" - }, - "application/vnd.onepagertatp": { - "source": "iana" - }, - "application/vnd.onepagertatx": { - "source": "iana" - }, - "application/vnd.onvif.metadata": { - "source": "iana" - }, - "application/vnd.openblox.game+xml": { - "source": "iana", - "compressible": true, - "extensions": ["obgx"] - }, - "application/vnd.openblox.game-binary": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openstreetmap.data+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osm"] - }, - "application/vnd.opentimestamps.ots": { - "source": "iana" - }, - "application/vnd.openvpi.dspx+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "iana", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "iana", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "iana", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oxli.countgraph": { - "source": "iana" - }, - "application/vnd.pagerduty+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "iana" - }, - "application/vnd.patentdive": { - "source": "iana" - }, - "application/vnd.patientecommsdoc": { - "source": "iana" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.procrate.brushset": { - "extensions": ["brushset"] - }, - "application/vnd.procreate.brush": { - "extensions": ["brush"] - }, - "application/vnd.procreate.dream": { - "extensions": ["drm"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.psfs": { - "source": "iana" - }, - "application/vnd.pt.mundusmundi": { - "source": "iana" - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtm"] - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quarantainenet": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.rar": { - "source": "iana", - "extensions": ["rar"] - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musicxml"] - }, - "application/vnd.relpipe": { - "source": "iana" - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.resilient.logic": { - "source": "iana" - }, - "application/vnd.restful+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "compressible": true, - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sar": { - "source": "iana" - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.seis+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shade-save-file": { - "source": "iana" - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.shootproof+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shopkick+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shp": { - "source": "iana" - }, - "application/vnd.shx": { - "source": "iana" - }, - "application/vnd.sigrok.session": { - "source": "iana" - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.sketchometry": { - "source": "iana" - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.smintio.portals.archive": { - "source": "iana" - }, - "application/vnd.snesdev-page-table": { - "source": "iana" - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fo"] - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sqlite3": { - "source": "iana" - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wadl"] - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.sybyl.mol2": { - "source": "iana" - }, - "application/vnd.sycle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.syft+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["ddf"] - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tableschema+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.think-cell.ppttc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.tml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.tri.onesource": { - "source": "iana" - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uic.osdm+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uoml","uo"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.uri-map": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.vel+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.veraison.tsm-report+cbor": { - "source": "iana" - }, - "application/vnd.veraison.tsm-report+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.veritone.aion+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.veryant.thin": { - "source": "iana" - }, - "application/vnd.ves.encrypted": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw","vsdx","vtx"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vocalshaper.vsp4": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.wasmflow.wafl": { - "source": "iana" - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.dpp": { - "source": "iana" - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordlift": { - "source": "iana" - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.wv.ssp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xarin.cpj": { - "source": "iana" - }, - "application/vnd.xecrets-encrypted": { - "source": "iana" - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["vxml"] - }, - "application/voucher-cms+json": { - "source": "iana", - "compressible": true - }, - "application/voucher-jws+json": { - "source": "iana", - "compressible": true - }, - "application/vp": { - "source": "iana" - }, - "application/vp+cose": { - "source": "iana" - }, - "application/vp+jwt": { - "source": "iana" - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/wasm": { - "source": "iana", - "compressible": true, - "extensions": ["wasm"] - }, - "application/watcherinfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wif"] - }, - "application/webpush-options+json": { - "source": "iana", - "compressible": true - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-arj": { - "compressible": false, - "extensions": ["arj"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blender": { - "extensions": ["blend"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-compressed": { - "extensions": ["rar"] - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "compressible": true, - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-ipynb+json": { - "compressible": true, - "extensions": ["ipynb"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-iwork-keynote-sffkey": { - "extensions": ["key"] - }, - "application/x-iwork-numbers-sffnumbers": { - "extensions": ["numbers"] - }, - "application/x-iwork-pages-sffpages": { - "extensions": ["pages"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-keepass2": { - "extensions": ["kdbx"] - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdos-program": { - "extensions": ["exe"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-pki-message": { - "source": "iana" - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-virtualbox-hdd": { - "compressible": true, - "extensions": ["hdd"] - }, - "application/x-virtualbox-ova": { - "compressible": true, - "extensions": ["ova"] - }, - "application/x-virtualbox-ovf": { - "compressible": true, - "extensions": ["ovf"] - }, - "application/x-virtualbox-vbox": { - "compressible": true, - "extensions": ["vbox"] - }, - "application/x-virtualbox-vbox-extpack": { - "compressible": false, - "extensions": ["vbox-extpack"] - }, - "application/x-virtualbox-vdi": { - "compressible": true, - "extensions": ["vdi"] - }, - "application/x-virtualbox-vhd": { - "compressible": true, - "extensions": ["vhd"] - }, - "application/x-virtualbox-vmdk": { - "compressible": true, - "extensions": ["vmdk"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "iana", - "extensions": ["der","crt","pem"] - }, - "application/x-x509-ca-ra-cert": { - "source": "iana" - }, - "application/x-x509-next-ca-cert": { - "source": "iana" - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zip-compressed": { - "extensions": ["zip"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana", - "compressible": true - }, - "application/xaml+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xav"] - }, - "application/xcap-caps+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xca"] - }, - "application/xcap-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xel"] - }, - "application/xcap-error+xml": { - "source": "iana", - "compressible": true - }, - "application/xcap-ns+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xns"] - }, - "application/xcon-conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana", - "compressible": true - }, - "application/xenc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xenc"] - }, - "application/xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache", - "compressible": true - }, - "application/xliff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xlf"] - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd","rng"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/xmpp+xml": { - "source": "iana", - "compressible": true - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xsl","xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yaml": { - "source": "iana" - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yang-data+cbor": { - "source": "iana" - }, - "application/yang-data+json": { - "source": "iana", - "compressible": true - }, - "application/yang-data+xml": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+json": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/yang-sid+json": { - "source": "iana", - "compressible": true - }, - "application/yin+xml": { - "source": "iana", - "compressible": true, - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zip+dotlottie": { - "extensions": ["lottie"] - }, - "application/zlib": { - "source": "iana" - }, - "application/zstd": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana", - "compressible": false, - "extensions": ["3gpp"] - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/aac": { - "source": "iana", - "extensions": ["adts","aac"] - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana", - "extensions": ["amr"] - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/evs": { - "source": "iana" - }, - "audio/flac": { - "source": "iana" - }, - "audio/flexfec": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g711-0": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/matroska": { - "source": "iana" - }, - "audio/melp": { - "source": "iana" - }, - "audio/melp1200": { - "source": "iana" - }, - "audio/melp2400": { - "source": "iana" - }, - "audio/melp600": { - "source": "iana" - }, - "audio/mhas": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/midi-clip": { - "source": "iana" - }, - "audio/mobile-xmf": { - "source": "iana", - "extensions": ["mxmf"] - }, - "audio/mp3": { - "compressible": false, - "extensions": ["mp3"] - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["m4a","mp4a","m4b"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx","opus"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/scip": { - "source": "iana" - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sofa": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tetra_acelp": { - "source": "iana" - }, - "audio/tetra_acelp_bb": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/tsvcis": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/usac": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dts.uhd": { - "source": "iana" - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.presonus.multitrack": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "apache" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/collection": { - "source": "iana", - "extensions": ["ttc"] - }, - "font/otf": { - "source": "iana", - "compressible": true, - "extensions": ["otf"] - }, - "font/sfnt": { - "source": "iana" - }, - "font/ttf": { - "source": "iana", - "compressible": true, - "extensions": ["ttf"] - }, - "font/woff": { - "source": "iana", - "extensions": ["woff"] - }, - "font/woff2": { - "source": "iana", - "extensions": ["woff2"] - }, - "image/aces": { - "source": "iana", - "extensions": ["exr"] - }, - "image/apng": { - "source": "iana", - "compressible": false, - "extensions": ["apng"] - }, - "image/avci": { - "source": "iana", - "extensions": ["avci"] - }, - "image/avcs": { - "source": "iana", - "extensions": ["avcs"] - }, - "image/avif": { - "source": "iana", - "compressible": false, - "extensions": ["avif"] - }, - "image/bmp": { - "source": "iana", - "compressible": true, - "extensions": ["bmp","dib"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/dicom-rle": { - "source": "iana", - "extensions": ["drle"] - }, - "image/dpx": { - "source": "iana", - "extensions": ["dpx"] - }, - "image/emf": { - "source": "iana", - "extensions": ["emf"] - }, - "image/fits": { - "source": "iana", - "extensions": ["fits"] - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/heic": { - "source": "iana", - "extensions": ["heic"] - }, - "image/heic-sequence": { - "source": "iana", - "extensions": ["heics"] - }, - "image/heif": { - "source": "iana", - "extensions": ["heif"] - }, - "image/heif-sequence": { - "source": "iana", - "extensions": ["heifs"] - }, - "image/hej2k": { - "source": "iana", - "extensions": ["hej2"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/j2c": { - "source": "iana" - }, - "image/jaii": { - "source": "iana", - "extensions": ["jaii"] - }, - "image/jais": { - "source": "iana", - "extensions": ["jais"] - }, - "image/jls": { - "source": "iana", - "extensions": ["jls"] - }, - "image/jp2": { - "source": "iana", - "compressible": false, - "extensions": ["jp2","jpg2"] - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpg","jpeg","jpe"] - }, - "image/jph": { - "source": "iana", - "extensions": ["jph"] - }, - "image/jphc": { - "source": "iana", - "extensions": ["jhc"] - }, - "image/jpm": { - "source": "iana", - "compressible": false, - "extensions": ["jpm","jpgm"] - }, - "image/jpx": { - "source": "iana", - "compressible": false, - "extensions": ["jpx","jpf"] - }, - "image/jxl": { - "source": "iana", - "extensions": ["jxl"] - }, - "image/jxr": { - "source": "iana", - "extensions": ["jxr"] - }, - "image/jxra": { - "source": "iana", - "extensions": ["jxra"] - }, - "image/jxrs": { - "source": "iana", - "extensions": ["jxrs"] - }, - "image/jxs": { - "source": "iana", - "extensions": ["jxs"] - }, - "image/jxsc": { - "source": "iana", - "extensions": ["jxsc"] - }, - "image/jxsi": { - "source": "iana", - "extensions": ["jxsi"] - }, - "image/jxss": { - "source": "iana", - "extensions": ["jxss"] - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/ktx2": { - "source": "iana", - "extensions": ["ktx2"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false, - "extensions": ["jfif"] - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif","btf"] - }, - "image/prs.pti": { - "source": "iana", - "extensions": ["pti"] - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana", - "extensions": ["t38"] - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tif","tiff"] - }, - "image/tiff-fx": { - "source": "iana", - "extensions": ["tfx"] - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana", - "extensions": ["azv"] - }, - "image/vnd.clip": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana", - "compressible": true, - "extensions": ["ico"] - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.mozilla.apng": { - "source": "iana" - }, - "image/vnd.ms-dds": { - "compressible": true, - "extensions": ["dds"] - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.pco.b16": { - "source": "iana", - "extensions": ["b16"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana", - "extensions": ["tap"] - }, - "image/vnd.valve.source.texture": { - "source": "iana", - "extensions": ["vtf"] - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana", - "extensions": ["pcx"] - }, - "image/webp": { - "source": "iana", - "extensions": ["webp"] - }, - "image/wmf": { - "source": "iana", - "extensions": ["wmf"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-adobe-dng": { - "extensions": ["dng"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-emf": { - "source": "iana" - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-wmf": { - "source": "iana" - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/bhttp": { - "source": "iana" - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana", - "extensions": [ - "disposition-notification" - ] - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana", - "extensions": ["u8msg"] - }, - "message/global-delivery-status": { - "source": "iana", - "extensions": ["u8dsn"] - }, - "message/global-disposition-notification": { - "source": "iana", - "extensions": ["u8mdn"] - }, - "message/global-headers": { - "source": "iana", - "extensions": ["u8hdr"] - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/mls": { - "source": "iana" - }, - "message/news": { - "source": "apache" - }, - "message/ohttp-req": { - "source": "iana" - }, - "message/ohttp-res": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime","mht","mhtml"] - }, - "message/s-http": { - "source": "apache" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "apache" - }, - "message/vnd.wfa.wsc": { - "source": "iana", - "extensions": ["wsc"] - }, - "model/3mf": { - "source": "iana", - "extensions": ["3mf"] - }, - "model/e57": { - "source": "iana" - }, - "model/gltf+json": { - "source": "iana", - "compressible": true, - "extensions": ["gltf"] - }, - "model/gltf-binary": { - "source": "iana", - "compressible": true, - "extensions": ["glb"] - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/jt": { - "source": "iana", - "extensions": ["jt"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/mtl": { - "source": "iana", - "extensions": ["mtl"] - }, - "model/obj": { - "source": "iana", - "extensions": ["obj"] - }, - "model/prc": { - "source": "iana", - "extensions": ["prc"] - }, - "model/step": { - "source": "iana", - "extensions": ["step","stp","stpnc","p21","210"] - }, - "model/step+xml": { - "source": "iana", - "compressible": true, - "extensions": ["stpx"] - }, - "model/step+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpz"] - }, - "model/step-xml+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpxz"] - }, - "model/stl": { - "source": "iana", - "extensions": ["stl"] - }, - "model/u3d": { - "source": "iana", - "extensions": ["u3d"] - }, - "model/vnd.bary": { - "source": "iana", - "extensions": ["bary"] - }, - "model/vnd.cld": { - "source": "iana", - "extensions": ["cld"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana", - "compressible": true - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana", - "extensions": ["ogex"] - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana", - "extensions": ["x_b"] - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana", - "extensions": ["x_t"] - }, - "model/vnd.pytha.pyox": { - "source": "iana", - "extensions": ["pyo","pyox"] - }, - "model/vnd.rosette.annotated-data-model": { - "source": "iana" - }, - "model/vnd.sap.vds": { - "source": "iana", - "extensions": ["vds"] - }, - "model/vnd.usda": { - "source": "iana", - "extensions": ["usda"] - }, - "model/vnd.usdz+zip": { - "source": "iana", - "compressible": false, - "extensions": ["usdz"] - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana", - "extensions": ["bsp"] - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana", - "extensions": ["x3db"] - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana", - "extensions": ["x3dv"] - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana" - }, - "multipart/multilingual": { - "source": "iana" - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/vnd.bint.med-plus": { - "source": "iana" - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/cql": { - "source": "iana" - }, - "text/cql-expression": { - "source": "iana" - }, - "text/cql-identifier": { - "source": "iana" - }, - "text/css": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "apache" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fhirpath": { - "source": "iana" - }, - "text/flexfec": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/gff3": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/hl7v2": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js","mjs"] - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "compressible": true, - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana", - "compressible": true, - "extensions": ["md","markdown"] - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mdx": { - "compressible": true, - "extensions": ["mdx"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana", - "charset": "UTF-8" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana", - "charset": "UTF-8" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/prs.prop.logic": { - "source": "iana" - }, - "text/prs.texi": { - "source": "iana" - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/shaclc": { - "source": "iana" - }, - "text/shex": { - "source": "iana", - "extensions": ["shex"] - }, - "text/slim": { - "extensions": ["slim","slm"] - }, - "text/spdx": { - "source": "iana", - "extensions": ["spdx"] - }, - "text/strings": { - "source": "iana" - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.ascii-art": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.exchangeable": { - "source": "iana" - }, - "text/vnd.familysearch.gedcom": { - "source": "iana", - "extensions": ["ged"] - }, - "text/vnd.ficlab.flt": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.gml": { - "source": "iana" - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.hans": { - "source": "iana" - }, - "text/vnd.hgl": { - "source": "iana" - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.senx.warpscript": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "apache" - }, - "text/vnd.sosi": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.vcf": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vnd.zoo.kcl": { - "source": "iana" - }, - "text/vtt": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/wgsl": { - "source": "iana", - "extensions": ["wgsl"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-org": { - "compressible": true, - "extensions": ["org"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-suse-ymp": { - "compressible": true, - "extensions": ["ymp"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "compressible": true, - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "iana" - }, - "video/3gpp": { - "source": "iana", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "iana" - }, - "video/3gpp2": { - "source": "iana", - "extensions": ["3g2"] - }, - "video/av1": { - "source": "iana" - }, - "video/bmpeg": { - "source": "iana" - }, - "video/bt656": { - "source": "iana" - }, - "video/celb": { - "source": "iana" - }, - "video/dv": { - "source": "iana" - }, - "video/encaprtp": { - "source": "iana" - }, - "video/evc": { - "source": "iana" - }, - "video/ffv1": { - "source": "iana" - }, - "video/flexfec": { - "source": "iana" - }, - "video/h261": { - "source": "iana", - "extensions": ["h261"] - }, - "video/h263": { - "source": "iana", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "iana" - }, - "video/h263-2000": { - "source": "iana" - }, - "video/h264": { - "source": "iana", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "iana" - }, - "video/h264-svc": { - "source": "iana" - }, - "video/h265": { - "source": "iana" - }, - "video/h266": { - "source": "iana" - }, - "video/iso.segment": { - "source": "iana", - "extensions": ["m4s"] - }, - "video/jpeg": { - "source": "iana", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "iana" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/jxsv": { - "source": "iana" - }, - "video/lottie+json": { - "source": "iana", - "compressible": true - }, - "video/matroska": { - "source": "iana" - }, - "video/matroska-3d": { - "source": "iana" - }, - "video/mj2": { - "source": "iana", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "iana" - }, - "video/mp2p": { - "source": "iana" - }, - "video/mp2t": { - "source": "iana", - "extensions": ["ts","m2t","m2ts","mts"] - }, - "video/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "iana" - }, - "video/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "iana" - }, - "video/mpv": { - "source": "iana" - }, - "video/nv": { - "source": "iana" - }, - "video/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "iana" - }, - "video/pointer": { - "source": "iana" - }, - "video/quicktime": { - "source": "iana", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raptorfec": { - "source": "iana" - }, - "video/raw": { - "source": "iana" - }, - "video/rtp-enc-aescm128": { - "source": "iana" - }, - "video/rtploopback": { - "source": "iana" - }, - "video/rtx": { - "source": "iana" - }, - "video/scip": { - "source": "iana" - }, - "video/smpte291": { - "source": "iana" - }, - "video/smpte292m": { - "source": "iana" - }, - "video/ulpfec": { - "source": "iana" - }, - "video/vc1": { - "source": "iana" - }, - "video/vc2": { - "source": "iana" - }, - "video/vnd.cctv": { - "source": "iana" - }, - "video/vnd.dece.hd": { - "source": "iana", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "iana", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "iana" - }, - "video/vnd.dece.pd": { - "source": "iana", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "iana", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "iana", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "iana" - }, - "video/vnd.directv.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dvb.file": { - "source": "iana", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "iana", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "iana" - }, - "video/vnd.motorola.video": { - "source": "iana" - }, - "video/vnd.motorola.videop": { - "source": "iana" - }, - "video/vnd.mpegurl": { - "source": "iana", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "iana", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "iana" - }, - "video/vnd.nokia.mp4vr": { - "source": "iana" - }, - "video/vnd.nokia.videovoip": { - "source": "iana" - }, - "video/vnd.objectvideo": { - "source": "iana" - }, - "video/vnd.planar": { - "source": "iana" - }, - "video/vnd.radgamettools.bink": { - "source": "iana" - }, - "video/vnd.radgamettools.smacker": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "iana" - }, - "video/vnd.sealed.mpeg4": { - "source": "iana" - }, - "video/vnd.sealed.swf": { - "source": "iana" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "iana" - }, - "video/vnd.uvvu.mp4": { - "source": "iana", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "iana", - "extensions": ["viv"] - }, - "video/vnd.youtube.yt": { - "source": "iana" - }, - "video/vp8": { - "source": "iana" - }, - "video/vp9": { - "source": "iana" - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/index.js deleted file mode 100644 index ec2be30..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/index.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/package.json deleted file mode 100644 index 289a370..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-db/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.54.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)", - "Robert Kieffer (http://github.com/broofa)" - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": "jshttp/mime-db", - "devDependencies": { - "csv-parse": "4.16.3", - "eslint": "8.32.0", - "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "media-typer": "1.1.0", - "mocha": "10.2.0", - "nyc": "15.1.0", - "stream-to-array": "2.3.0", - "undici": "7.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "node scripts/fetch-apache && node scripts/fetch-iana && node scripts/fetch-nginx", - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "update": "npm run fetch && npm run build", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/HISTORY.md deleted file mode 100644 index 18473e4..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,421 +0,0 @@ -3.0.1 / 2025-03-26 -=================== - -* deps: mime-db@1.54.0 - -3.0.0 / 2024-08-31 -=================== - -* Drop support for node <18 -* deps: mime-db@1.53.0 -* resolve extension conflicts with mime-score (#119) - * asc -> application/pgp-signature is now application/pgp-keys - * mpp -> application/vnd.ms-project is now application/dash-patch+xml - * ac -> application/vnd.nokia.n-gage.ac+xml is now application/pkix-attr-cert - * bdoc -> application/x-bdoc is now application/bdoc - * wmz -> application/x-msmetafile is now application/x-ms-wmz - * xsl -> application/xslt+xml is now application/xml - * wav -> audio/wave is now audio/wav - * rtf -> text/rtf is now application/rtf - * xml -> text/xml is now application/xml - * mp4 -> video/mp4 is now application/mp4 - * mpg4 -> video/mp4 is now application/mp4 - - -2.1.35 / 2022-03-12 -=================== - - * deps: mime-db@1.52.0 - - Add extensions from IANA for more `image/*` types - - Add extension `.asc` to `application/pgp-keys` - - Add extensions to various XML types - - Add new upstream MIME types - -2.1.34 / 2021-11-08 -=================== - - * deps: mime-db@1.51.0 - - Add new upstream MIME types - -2.1.33 / 2021-10-01 -=================== - - * deps: mime-db@1.50.0 - - Add deprecated iWorks mime types and extensions - - Add new upstream MIME types - -2.1.32 / 2021-07-27 -=================== - - * deps: mime-db@1.49.0 - - Add extension `.trig` to `application/trig` - - Add new upstream MIME types - -2.1.31 / 2021-06-01 -=================== - - * deps: mime-db@1.48.0 - - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - - Add new upstream MIME types - -2.1.30 / 2021-04-02 -=================== - - * deps: mime-db@1.47.0 - - Add extension `.amr` to `audio/amr` - - Remove ambigious extensions from IANA for `application/*+xml` types - - Update primary extension to `.es` for `application/ecmascript` - -2.1.29 / 2021-02-17 -=================== - - * deps: mime-db@1.46.0 - - Add extension `.amr` to `audio/amr` - - Add extension `.m4s` to `video/iso.segment` - - Add extension `.opus` to `audio/ogg` - - Add new upstream MIME types - -2.1.28 / 2021-01-01 -=================== - - * deps: mime-db@1.45.0 - - Add `application/ubjson` with extension `.ubj` - - Add `image/avif` with extension `.avif` - - Add `image/ktx2` with extension `.ktx2` - - Add extension `.dbf` to `application/vnd.dbf` - - Add extension `.rar` to `application/vnd.rar` - - Add extension `.td` to `application/urc-targetdesc+xml` - - Add new upstream MIME types - - Fix extension of `application/vnd.apple.keynote` to be `.key` - -2.1.27 / 2020-04-23 -=================== - - * deps: mime-db@1.44.0 - - Add charsets from IANA - - Add extension `.cjs` to `application/node` - - Add new upstream MIME types - -2.1.26 / 2020-01-05 -=================== - - * deps: mime-db@1.43.0 - - Add `application/x-keepass2` with extension `.kdbx` - - Add extension `.mxmf` to `audio/mobile-xmf` - - Add extensions from IANA for `application/*+xml` types - - Add new upstream MIME types - -2.1.25 / 2019-11-12 -=================== - - * deps: mime-db@1.42.0 - - Add new upstream MIME types - - Add `application/toml` with extension `.toml` - - Add `image/vnd.ms-dds` with extension `.dds` - -2.1.24 / 2019-04-20 -=================== - - * deps: mime-db@1.40.0 - - Add extensions from IANA for `model/*` types - - Add `text/mdx` with extension `.mdx` - -2.1.23 / 2019-04-17 -=================== - - * deps: mime-db@~1.39.0 - - Add extensions `.siv` and `.sieve` to `application/sieve` - - Add new upstream MIME types - -2.1.22 / 2019-02-14 -=================== - - * deps: mime-db@~1.38.0 - - Add extension `.nq` to `application/n-quads` - - Add extension `.nt` to `application/n-triples` - - Add new upstream MIME types - -2.1.21 / 2018-10-19 -=================== - - * deps: mime-db@~1.37.0 - - Add extensions to HEIC image types - - Add new upstream MIME types - -2.1.20 / 2018-08-26 -=================== - - * deps: mime-db@~1.36.0 - - Add Apple file extensions from IANA - - Add extensions from IANA for `image/*` types - - Add new upstream MIME types - -2.1.19 / 2018-07-17 -=================== - - * deps: mime-db@~1.35.0 - - Add extension `.csl` to `application/vnd.citationstyles.style+xml` - - Add extension `.es` to `application/ecmascript` - - Add extension `.owl` to `application/rdf+xml` - - Add new upstream MIME types - - Add UTF-8 as default charset for `text/turtle` - -2.1.18 / 2018-02-16 -=================== - - * deps: mime-db@~1.33.0 - - Add `application/raml+yaml` with extension `.raml` - - Add `application/wasm` with extension `.wasm` - - Add `text/shex` with extension `.shex` - - Add extensions for JPEG-2000 images - - Add extensions from IANA for `message/*` types - - Add new upstream MIME types - - Update font MIME types - - Update `text/hjson` to registered `application/hjson` - -2.1.17 / 2017-09-01 -=================== - - * deps: mime-db@~1.30.0 - - Add `application/vnd.ms-outlook` - - Add `application/x-arj` - - Add extension `.mjs` to `application/javascript` - - Add glTF types and extensions - - Add new upstream MIME types - - Add `text/x-org` - - Add VirtualBox MIME types - - Fix `source` records for `video/*` types that are IANA - - Update `font/opentype` to registered `font/otf` - -2.1.16 / 2017-07-24 -=================== - - * deps: mime-db@~1.29.0 - - Add `application/fido.trusted-apps+json` - - Add extension `.wadl` to `application/vnd.sun.wadl+xml` - - Add extension `.gz` to `application/gzip` - - Add new upstream MIME types - - Update extensions `.md` and `.markdown` to be `text/markdown` - -2.1.15 / 2017-03-23 -=================== - - * deps: mime-db@~1.27.0 - - Add new mime types - - Add `image/apng` - -2.1.14 / 2017-01-14 -=================== - - * deps: mime-db@~1.26.0 - - Add new mime types - -2.1.13 / 2016-11-18 -=================== - - * deps: mime-db@~1.25.0 - - Add new mime types - -2.1.12 / 2016-09-18 -=================== - - * deps: mime-db@~1.24.0 - - Add new mime types - - Add `audio/mp3` - -2.1.11 / 2016-05-01 -=================== - - * deps: mime-db@~1.23.0 - - Add new mime types - -2.1.10 / 2016-02-15 -=================== - - * deps: mime-db@~1.22.0 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -2.1.9 / 2016-01-06 -================== - - * deps: mime-db@~1.21.0 - - Add new mime types - -2.1.8 / 2015-11-30 -================== - - * deps: mime-db@~1.20.0 - - Add new mime types - -2.1.7 / 2015-09-20 -================== - - * deps: mime-db@~1.19.0 - - Add new mime types - -2.1.6 / 2015-09-03 -================== - - * deps: mime-db@~1.18.0 - - Add new mime types - -2.1.5 / 2015-08-20 -================== - - * deps: mime-db@~1.17.0 - - Add new mime types - -2.1.4 / 2015-07-30 -================== - - * deps: mime-db@~1.16.0 - - Add new mime types - -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/README.md deleted file mode 100644 index 222d2b5..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# mime-types - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, - `mime-types` simply returns `false`, so do - `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- No `.define()` functionality -- Bug fixes for `.lookup(path)` - -Otherwise, the API is compatible with `mime` 1.x. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install mime-types -``` - -## Note on MIME Type Data and Semver - -This package considers the programmatic api as the semver compatibility. Additionally, the package which provides the MIME data -for this package (`mime-db`) *also* considers it's programmatic api as the semver contract. This means the MIME type resolution is *not* considered -in the semver bumps. - -In the past the version of `mime-db` was pinned to give two decision points when adopting MIME data changes. This is no longer true. We still update the -`mime-db` package here as a `minor` release when necessary, but will use a `^` range going forward. This means that if you want to pin your `mime-db` data -you will need to do it in your application. While this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is -a breaking change. - -If you wish to pin your `mime-db` version you can do that with overrides via your package manager of choice. See their documentation for how to correctly configure that. - -## Adding Types - -All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. -When given an extension, `mime.lookup` is used to get the matching -content-type, otherwise the given content-type is used. Then if the -content-type does not already have a `charset` parameter, `mime.charset` -is used to get the default charset and add to the returned content-type. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' -mime.contentType('text/html') // 'text/html; charset=utf-8' -mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci -[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master -[node-version-image]: https://badgen.net/npm/node/mime-types -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-types -[npm-url]: https://npmjs.org/package/mime-types -[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/index.js deleted file mode 100644 index c348cb6..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/index.js +++ /dev/null @@ -1,211 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname -var mimeScore = require('./mimeScore') - -/** - * Module variables. - * @private - */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) -exports._extensionConflicts = [] - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .slice(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps (extensions, types) { - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - types[extension] = _preferredType(extension, types[extension], type) - - // DELETE (eventually): Capture extension->type maps that change as a - // result of switching to mime-score. This is just to help make reviewing - // PR #119 easier, and can be removed once that PR is approved. - const legacyType = _preferredTypeLegacy( - extension, - types[extension], - type - ) - if (legacyType !== types[extension]) { - exports._extensionConflicts.push([extension, legacyType, types[extension]]) - } - } - }) -} - -// Resolve type conflict using mime-score -function _preferredType (ext, type0, type1) { - var score0 = type0 ? mimeScore(type0, db[type0].source) : 0 - var score1 = type1 ? mimeScore(type1, db[type1].source) : 0 - - return score0 > score1 ? type0 : type1 -} - -// Resolve type conflict using pre-mime-score logic -function _preferredTypeLegacy (ext, type0, type1) { - var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana'] - - var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0 - var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0 - - if ( - exports.types[extension] !== 'application/octet-stream' && - (score0 > score1 || - (score0 === score1 && - exports.types[extension]?.slice(0, 12) === 'application/')) - ) { - return type0 - } - - return score0 > score1 ? type0 : type1 -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/mimeScore.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/mimeScore.js deleted file mode 100644 index e2ecc66..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/mimeScore.js +++ /dev/null @@ -1,52 +0,0 @@ -// 'mime-score' back-ported to CommonJS - -// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3) -var FACET_SCORES = { - 'prs.': 100, - 'x-': 200, - 'x.': 300, - 'vnd.': 400, - default: 900 -} - -// Score mime source (Logic originally from `jshttp/mime-types` module) -var SOURCE_SCORES = { - nginx: 10, - apache: 20, - iana: 40, - default: 30 // definitions added by `jshttp/mime-db` project? -} - -var TYPE_SCORES = { - // prefer application/xml over text/xml - // prefer application/rtf over text/rtf - application: 1, - - // prefer font/woff over application/font-woff - font: 2, - - default: 0 -} - -/** - * Get each component of the score for a mime type. The sum of these is the - * total score. The higher the score, the more "official" the type. - */ -module.exports = function mimeScore (mimeType, source = 'default') { - if (mimeType === 'application/octet-stream') { - return 0 - } - - const [type, subtype] = mimeType.split('/') - - const facet = subtype.replace(/(\.|x-).*/, '$1') - - const facetScore = FACET_SCORES[facet] || FACET_SCORES.default - const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default - const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default - - // All else being equal prefer shorter types - const lengthScore = 1 - mimeType.length / 100 - - return facetScore + sourceScore + typeScore + lengthScore -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/package.json deleted file mode 100644 index 79481ae..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/mime-types/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "3.0.1", - "contributors": [ - "Douglas Christopher Wilson ", - "Jeremiah Senkpiel (https://searchbeam.jit.su)", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": "jshttp/mime-types", - "dependencies": { - "mime-db": "^1.54.0" - }, - "devDependencies": { - "eslint": "8.33.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "10.2.0", - "nyc": "15.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js", - "mimeScore.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec test/test.js", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/license.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/readme.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/HISTORY.md deleted file mode 100644 index 63d537d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/HISTORY.md +++ /dev/null @@ -1,114 +0,0 @@ -1.0.0 / 2024-08-31 -================== - - * Drop support for node <18 - * Added an option preferred encodings array #59 - -0.6.3 / 2022-01-22 -================== - - * Revert "Lazy-load modules from main entry point" - -0.6.2 / 2019-04-29 -================== - - * Fix sorting charset, encoding, and language with extra parameters - -0.6.1 / 2016-05-02 -================== - - * perf: improve `Accept` parsing speed - * perf: improve `Accept-Charset` parsing speed - * perf: improve `Accept-Encoding` parsing speed - * perf: improve `Accept-Language` parsing speed - -0.6.0 / 2015-09-29 -================== - - * Fix including type extensions in parameters in `Accept` parsing - * Fix parsing `Accept` parameters with quoted equals - * Fix parsing `Accept` parameters with quoted semicolons - * Lazy-load modules from main entry point - * perf: delay type concatenation until needed - * perf: enable strict mode - * perf: hoist regular expressions - * perf: remove closures getting spec properties - * perf: remove a closure from media type parsing - * perf: remove property delete from media type parsing - -0.5.3 / 2015-05-10 -================== - - * Fix media type parameter matching to be case-insensitive - -0.5.2 / 2015-05-06 -================== - - * Fix comparing media types with quoted values - * Fix splitting media types with quoted commas - -0.5.1 / 2015-02-14 -================== - - * Fix preference sorting to be stable for long acceptable lists - -0.5.0 / 2014-12-18 -================== - - * Fix list return order when large accepted list - * Fix missing identity encoding when q=0 exists - * Remove dynamic building of Negotiator class - -0.4.9 / 2014-10-14 -================== - - * Fix error when media type has invalid parameter - -0.4.8 / 2014-09-28 -================== - - * Fix all negotiations to be case-insensitive - * Stable sort preferences of same quality according to client order - * Support Node.js 0.6 - -0.4.7 / 2014-06-24 -================== - - * Handle invalid provided languages - * Handle invalid provided media types - -0.4.6 / 2014-06-11 -================== - - * Order by specificity when quality is the same - -0.4.5 / 2014-05-29 -================== - - * Fix regression in empty header handling - -0.4.4 / 2014-05-29 -================== - - * Fix behaviors when headers are not present - -0.4.3 / 2014-04-16 -================== - - * Handle slashes on media params correctly - -0.4.2 / 2014-02-28 -================== - - * Fix media type sorting - * Handle media types params strictly - -0.4.1 / 2014-01-16 -================== - - * Use most specific matches - -0.4.0 / 2014-01-09 -================== - - * Remove preferred prefix from methods diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/LICENSE deleted file mode 100644 index ea6b9e2..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 Federico Romero -Copyright (c) 2012-2014 Isaac Z. Schlueter -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/README.md deleted file mode 100644 index 6fb7f2d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/README.md +++ /dev/null @@ -1,212 +0,0 @@ -# negotiator - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -An HTTP content negotiator for Node.js - -## Installation - -```sh -$ npm install negotiator -``` - -## API - -```js -var Negotiator = require('negotiator') -``` - -### Accept Negotiation - -```js -availableMediaTypes = ['text/html', 'text/plain', 'application/json'] - -// The negotiator constructor receives a request object -negotiator = new Negotiator(request) - -// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' - -negotiator.mediaTypes() -// -> ['text/html', 'image/jpeg', 'application/*'] - -negotiator.mediaTypes(availableMediaTypes) -// -> ['text/html', 'application/json'] - -negotiator.mediaType(availableMediaTypes) -// -> 'text/html' -``` - -You can check a working example at `examples/accept.js`. - -#### Methods - -##### mediaType() - -Returns the most preferred media type from the client. - -##### mediaType(availableMediaType) - -Returns the most preferred media type from a list of available media types. - -##### mediaTypes() - -Returns an array of preferred media types ordered by the client preference. - -##### mediaTypes(availableMediaTypes) - -Returns an array of preferred media types ordered by priority from a list of -available media types. - -### Accept-Language Negotiation - -```js -negotiator = new Negotiator(request) - -availableLanguages = ['en', 'es', 'fr'] - -// Let's say Accept-Language header is 'en;q=0.8, es, pt' - -negotiator.languages() -// -> ['es', 'pt', 'en'] - -negotiator.languages(availableLanguages) -// -> ['es', 'en'] - -language = negotiator.language(availableLanguages) -// -> 'es' -``` - -You can check a working example at `examples/language.js`. - -#### Methods - -##### language() - -Returns the most preferred language from the client. - -##### language(availableLanguages) - -Returns the most preferred language from a list of available languages. - -##### languages() - -Returns an array of preferred languages ordered by the client preference. - -##### languages(availableLanguages) - -Returns an array of preferred languages ordered by priority from a list of -available languages. - -### Accept-Charset Negotiation - -```js -availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' - -negotiator.charsets() -// -> ['utf-8', 'iso-8859-1', 'utf-7'] - -negotiator.charsets(availableCharsets) -// -> ['utf-8', 'iso-8859-1'] - -negotiator.charset(availableCharsets) -// -> 'utf-8' -``` - -You can check a working example at `examples/charset.js`. - -#### Methods - -##### charset() - -Returns the most preferred charset from the client. - -##### charset(availableCharsets) - -Returns the most preferred charset from a list of available charsets. - -##### charsets() - -Returns an array of preferred charsets ordered by the client preference. - -##### charsets(availableCharsets) - -Returns an array of preferred charsets ordered by priority from a list of -available charsets. - -### Accept-Encoding Negotiation - -```js -availableEncodings = ['identity', 'gzip'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' - -negotiator.encodings() -// -> ['gzip', 'identity', 'compress'] - -negotiator.encodings(availableEncodings) -// -> ['gzip', 'identity'] - -negotiator.encoding(availableEncodings) -// -> 'gzip' -``` - -You can check a working example at `examples/encoding.js`. - -#### Methods - -##### encoding() - -Returns the most preferred encoding from the client. - -##### encoding(availableEncodings) - -Returns the most preferred encoding from a list of available encodings. - -##### encoding(availableEncodings, { preferred }) - -Returns the most preferred encoding from a list of available encodings, while prioritizing based on `preferred` array between same-quality encodings. - -##### encodings() - -Returns an array of preferred encodings ordered by the client preference. - -##### encodings(availableEncodings) - -Returns an array of preferred encodings ordered by priority from a list of -available encodings. - -##### encodings(availableEncodings, { preferred }) - -Returns an array of preferred encodings ordered by priority from a list of -available encodings, while prioritizing based on `preferred` array between same-quality encodings. - -## See Also - -The [accepts](https://npmjs.org/package/accepts#readme) module builds on -this module and provides an alternative interface, mime type validation, -and more. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/negotiator.svg -[npm-url]: https://npmjs.org/package/negotiator -[node-version-image]: https://img.shields.io/node/v/negotiator.svg -[node-version-url]: https://nodejs.org/en/download/ -[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master -[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg -[downloads-url]: https://npmjs.org/package/negotiator -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/negotiator/ci/master?label=ci -[github-actions-ci-url]: https://github.com/jshttp/negotiator/actions/workflows/ci.yml diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/index.js deleted file mode 100644 index 4f51315..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/index.js +++ /dev/null @@ -1,83 +0,0 @@ -/*! - * negotiator - * Copyright(c) 2012 Federico Romero - * Copyright(c) 2012-2014 Isaac Z. Schlueter - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -var preferredCharsets = require('./lib/charset') -var preferredEncodings = require('./lib/encoding') -var preferredLanguages = require('./lib/language') -var preferredMediaTypes = require('./lib/mediaType') - -/** - * Module exports. - * @public - */ - -module.exports = Negotiator; -module.exports.Negotiator = Negotiator; - -/** - * Create a Negotiator instance from a request. - * @param {object} request - * @public - */ - -function Negotiator(request) { - if (!(this instanceof Negotiator)) { - return new Negotiator(request); - } - - this.request = request; -} - -Negotiator.prototype.charset = function charset(available) { - var set = this.charsets(available); - return set && set[0]; -}; - -Negotiator.prototype.charsets = function charsets(available) { - return preferredCharsets(this.request.headers['accept-charset'], available); -}; - -Negotiator.prototype.encoding = function encoding(available, opts) { - var set = this.encodings(available, opts); - return set && set[0]; -}; - -Negotiator.prototype.encodings = function encodings(available, options) { - var opts = options || {}; - return preferredEncodings(this.request.headers['accept-encoding'], available, opts.preferred); -}; - -Negotiator.prototype.language = function language(available) { - var set = this.languages(available); - return set && set[0]; -}; - -Negotiator.prototype.languages = function languages(available) { - return preferredLanguages(this.request.headers['accept-language'], available); -}; - -Negotiator.prototype.mediaType = function mediaType(available) { - var set = this.mediaTypes(available); - return set && set[0]; -}; - -Negotiator.prototype.mediaTypes = function mediaTypes(available) { - return preferredMediaTypes(this.request.headers.accept, available); -}; - -// Backwards compatibility -Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; -Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; -Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; -Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; -Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; -Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; -Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; -Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/charset.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/charset.js deleted file mode 100644 index cdd0148..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/charset.js +++ /dev/null @@ -1,169 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredCharsets; -module.exports.preferredCharsets = preferredCharsets; - -/** - * Module variables. - * @private - */ - -var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Charset header. - * @private - */ - -function parseAcceptCharset(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var charset = parseCharset(accepts[i].trim(), i); - - if (charset) { - accepts[j++] = charset; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a charset from the Accept-Charset header. - * @private - */ - -function parseCharset(str, i) { - var match = simpleCharsetRegExp.exec(str); - if (!match) return null; - - var charset = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';') - for (var j = 0; j < params.length; j++) { - var p = params[j].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - charset: charset, - q: q, - i: i - }; -} - -/** - * Get the priority of a charset. - * @private - */ - -function getCharsetPriority(charset, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(charset, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the charset. - * @private - */ - -function specify(charset, spec, index) { - var s = 0; - if(spec.charset.toLowerCase() === charset.toLowerCase()){ - s |= 1; - } else if (spec.charset !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -} - -/** - * Get the preferred charsets from an Accept-Charset header. - * @public - */ - -function preferredCharsets(accept, provided) { - // RFC 2616 sec 14.2: no header = * - var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all charsets - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullCharset); - } - - var priorities = provided.map(function getPriority(type, index) { - return getCharsetPriority(type, accepts, index); - }); - - // sorted list of accepted charsets - return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full charset string. - * @private - */ - -function getFullCharset(spec) { - return spec.charset; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/encoding.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/encoding.js deleted file mode 100644 index 9ebb633..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/encoding.js +++ /dev/null @@ -1,205 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredEncodings; -module.exports.preferredEncodings = preferredEncodings; - -/** - * Module variables. - * @private - */ - -var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Encoding header. - * @private - */ - -function parseAcceptEncoding(accept) { - var accepts = accept.split(','); - var hasIdentity = false; - var minQuality = 1; - - for (var i = 0, j = 0; i < accepts.length; i++) { - var encoding = parseEncoding(accepts[i].trim(), i); - - if (encoding) { - accepts[j++] = encoding; - hasIdentity = hasIdentity || specify('identity', encoding); - minQuality = Math.min(minQuality, encoding.q || 1); - } - } - - if (!hasIdentity) { - /* - * If identity doesn't explicitly appear in the accept-encoding header, - * it's added to the list of acceptable encoding with the lowest q - */ - accepts[j++] = { - encoding: 'identity', - q: minQuality, - i: i - }; - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse an encoding from the Accept-Encoding header. - * @private - */ - -function parseEncoding(str, i) { - var match = simpleEncodingRegExp.exec(str); - if (!match) return null; - - var encoding = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';'); - for (var j = 0; j < params.length; j++) { - var p = params[j].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - encoding: encoding, - q: q, - i: i - }; -} - -/** - * Get the priority of an encoding. - * @private - */ - -function getEncodingPriority(encoding, accepted, index) { - var priority = {encoding: encoding, o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(encoding, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the encoding. - * @private - */ - -function specify(encoding, spec, index) { - var s = 0; - if(spec.encoding.toLowerCase() === encoding.toLowerCase()){ - s |= 1; - } else if (spec.encoding !== '*' ) { - return null - } - - return { - encoding: encoding, - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -/** - * Get the preferred encodings from an Accept-Encoding header. - * @public - */ - -function preferredEncodings(accept, provided, preferred) { - var accepts = parseAcceptEncoding(accept || ''); - - var comparator = preferred ? function comparator (a, b) { - if (a.q !== b.q) { - return b.q - a.q // higher quality first - } - - var aPreferred = preferred.indexOf(a.encoding) - var bPreferred = preferred.indexOf(b.encoding) - - if (aPreferred === -1 && bPreferred === -1) { - // consider the original specifity/order - return (b.s - a.s) || (a.o - b.o) || (a.i - b.i) - } - - if (aPreferred !== -1 && bPreferred !== -1) { - return aPreferred - bPreferred // consider the preferred order - } - - return aPreferred === -1 ? 1 : -1 // preferred first - } : compareSpecs; - - if (!provided) { - // sorted list of all encodings - return accepts - .filter(isQuality) - .sort(comparator) - .map(getFullEncoding); - } - - var priorities = provided.map(function getPriority(type, index) { - return getEncodingPriority(type, accepts, index); - }); - - // sorted list of accepted encodings - return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i); -} - -/** - * Get full encoding string. - * @private - */ - -function getFullEncoding(spec) { - return spec.encoding; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/language.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/language.js deleted file mode 100644 index a231672..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/language.js +++ /dev/null @@ -1,179 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredLanguages; -module.exports.preferredLanguages = preferredLanguages; - -/** - * Module variables. - * @private - */ - -var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; - -/** - * Parse the Accept-Language header. - * @private - */ - -function parseAcceptLanguage(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var language = parseLanguage(accepts[i].trim(), i); - - if (language) { - accepts[j++] = language; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a language from the Accept-Language header. - * @private - */ - -function parseLanguage(str, i) { - var match = simpleLanguageRegExp.exec(str); - if (!match) return null; - - var prefix = match[1] - var suffix = match[2] - var full = prefix - - if (suffix) full += "-" + suffix; - - var q = 1; - if (match[3]) { - var params = match[3].split(';') - for (var j = 0; j < params.length; j++) { - var p = params[j].split('='); - if (p[0] === 'q') q = parseFloat(p[1]); - } - } - - return { - prefix: prefix, - suffix: suffix, - q: q, - i: i, - full: full - }; -} - -/** - * Get the priority of a language. - * @private - */ - -function getLanguagePriority(language, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(language, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the language. - * @private - */ - -function specify(language, spec, index) { - var p = parseLanguage(language) - if (!p) return null; - var s = 0; - if(spec.full.toLowerCase() === p.full.toLowerCase()){ - s |= 4; - } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { - s |= 2; - } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { - s |= 1; - } else if (spec.full !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -/** - * Get the preferred languages from an Accept-Language header. - * @public - */ - -function preferredLanguages(accept, provided) { - // RFC 2616 sec 14.4: no header = * - var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all languages - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullLanguage); - } - - var priorities = provided.map(function getPriority(type, index) { - return getLanguagePriority(type, accepts, index); - }); - - // sorted list of accepted languages - return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full language string. - * @private - */ - -function getFullLanguage(spec) { - return spec.full; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/mediaType.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/mediaType.js deleted file mode 100644 index 8e402ea..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/mediaType.js +++ /dev/null @@ -1,294 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = preferredMediaTypes; -module.exports.preferredMediaTypes = preferredMediaTypes; - -/** - * Module variables. - * @private - */ - -var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; - -/** - * Parse the Accept header. - * @private - */ - -function parseAccept(accept) { - var accepts = splitMediaTypes(accept); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var mediaType = parseMediaType(accepts[i].trim(), i); - - if (mediaType) { - accepts[j++] = mediaType; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -/** - * Parse a media type from the Accept header. - * @private - */ - -function parseMediaType(str, i) { - var match = simpleMediaTypeRegExp.exec(str); - if (!match) return null; - - var params = Object.create(null); - var q = 1; - var subtype = match[2]; - var type = match[1]; - - if (match[3]) { - var kvps = splitParameters(match[3]).map(splitKeyValuePair); - - for (var j = 0; j < kvps.length; j++) { - var pair = kvps[j]; - var key = pair[0].toLowerCase(); - var val = pair[1]; - - // get the value, unwrapping quotes - var value = val && val[0] === '"' && val[val.length - 1] === '"' - ? val.slice(1, -1) - : val; - - if (key === 'q') { - q = parseFloat(value); - break; - } - - // store parameter - params[key] = value; - } - } - - return { - type: type, - subtype: subtype, - params: params, - q: q, - i: i - }; -} - -/** - * Get the priority of a media type. - * @private - */ - -function getMediaTypePriority(type, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(type, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -/** - * Get the specificity of the media type. - * @private - */ - -function specify(type, spec, index) { - var p = parseMediaType(type); - var s = 0; - - if (!p) { - return null; - } - - if(spec.type.toLowerCase() == p.type.toLowerCase()) { - s |= 4 - } else if(spec.type != '*') { - return null; - } - - if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { - s |= 2 - } else if(spec.subtype != '*') { - return null; - } - - var keys = Object.keys(spec.params); - if (keys.length > 0) { - if (keys.every(function (k) { - return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase(); - })) { - s |= 1 - } else { - return null - } - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s, - } -} - -/** - * Get the preferred media types from an Accept header. - * @public - */ - -function preferredMediaTypes(accept, provided) { - // RFC 2616 sec 14.2: no header = */* - var accepts = parseAccept(accept === undefined ? '*/*' : accept || ''); - - if (!provided) { - // sorted list of all types - return accepts - .filter(isQuality) - .sort(compareSpecs) - .map(getFullType); - } - - var priorities = provided.map(function getPriority(type, index) { - return getMediaTypePriority(type, accepts, index); - }); - - // sorted list of accepted types - return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -/** - * Compare two specs. - * @private - */ - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -/** - * Get full type string. - * @private - */ - -function getFullType(spec) { - return spec.type + '/' + spec.subtype; -} - -/** - * Check if a spec has any quality. - * @private - */ - -function isQuality(spec) { - return spec.q > 0; -} - -/** - * Count the number of quotes in a string. - * @private - */ - -function quoteCount(string) { - var count = 0; - var index = 0; - - while ((index = string.indexOf('"', index)) !== -1) { - count++; - index++; - } - - return count; -} - -/** - * Split a key value pair. - * @private - */ - -function splitKeyValuePair(str) { - var index = str.indexOf('='); - var key; - var val; - - if (index === -1) { - key = str; - } else { - key = str.slice(0, index); - val = str.slice(index + 1); - } - - return [key, val]; -} - -/** - * Split an Accept header into media types. - * @private - */ - -function splitMediaTypes(accept) { - var accepts = accept.split(','); - - for (var i = 1, j = 0; i < accepts.length; i++) { - if (quoteCount(accepts[j]) % 2 == 0) { - accepts[++j] = accepts[i]; - } else { - accepts[j] += ',' + accepts[i]; - } - } - - // trim accepts - accepts.length = j + 1; - - return accepts; -} - -/** - * Split a string of parameters. - * @private - */ - -function splitParameters(str) { - var parameters = str.split(';'); - - for (var i = 1, j = 0; i < parameters.length; i++) { - if (quoteCount(parameters[j]) % 2 == 0) { - parameters[++j] = parameters[i]; - } else { - parameters[j] += ';' + parameters[i]; - } - } - - // trim parameters - parameters.length = j + 1; - - for (var i = 0; i < parameters.length; i++) { - parameters[i] = parameters[i].trim(); - } - - return parameters; -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/package.json deleted file mode 100644 index e4bdc1e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "1.0.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Federico Romero ", - "Isaac Z. Schlueter (http://blog.izs.me/)" - ], - "license": "MIT", - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "repository": "jshttp/negotiator", - "devDependencies": { - "eslint": "7.32.0", - "eslint-plugin-markdown": "2.2.1", - "mocha": "9.1.3", - "nyc": "15.1.0" - }, - "files": [ - "lib/", - "HISTORY.md", - "LICENSE", - "index.js", - "README.md" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.editorconfig b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.editorconfig deleted file mode 100644 index 6adecfb..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.editorconfig +++ /dev/null @@ -1,46 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 4 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 160 -quote_type = single - -[test/*] -max_line_length = off - -[LICENSE.md] -indent_size = off - -[*.md] -max_line_length = off - -[*.json] -max_line_length = off - -[Makefile] -max_line_length = off - -[CHANGELOG.md] -indent_style = space -indent_size = 2 - -[LICENSE] -indent_size = 2 -max_line_length = off - -[coverage/**/*] -indent_size = off -indent_style = off -indent = off -max_line_length = off - -[.nycrc] -indent_style = tab - -[tea.yaml] -indent_size = 2 diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.eslintrc b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.eslintrc deleted file mode 100644 index a89f60e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.eslintrc +++ /dev/null @@ -1,39 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "ignorePatterns": [ - "dist/", - ], - - "rules": { - "complexity": 0, - "consistent-return": 1, - "func-name-matching": 0, - "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], - "indent": [2, 4], - "max-lines": 0, - "max-lines-per-function": [2, { "max": 150 }], - "max-params": [2, 18], - "max-statements": [2, 100], - "multiline-comment-style": 0, - "no-continue": 1, - "no-magic-numbers": 0, - "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], - }, - - "overrides": [ - { - "files": "test/**", - "rules": { - "function-paren-newline": 0, - "max-lines-per-function": 0, - "max-statements": 0, - "no-buffer-constructor": 0, - "no-extend-native": 0, - "no-throw-literal": 0, - }, - }, - ], -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.github/FUNDING.yml b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.github/FUNDING.yml deleted file mode 100644 index 0355f4f..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ljharb] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: npm/qs -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with a single custom sponsorship URL diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.nycrc b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.nycrc deleted file mode 100644 index 1d57cab..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/.nycrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "lines": 86, - "statements": 85.93, - "functions": 82.43, - "branches": 76.06, - "exclude": [ - "coverage", - "dist" - ] -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/CHANGELOG.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/CHANGELOG.md deleted file mode 100644 index dc8e879..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,622 +0,0 @@ -## **6.14.0** -- [New] `parse`: add `throwOnParameterLimitExceeded` option (#517) -- [Refactor] `parse`: use `utils.combine` more -- [patch] `parse`: add explicit `throwOnLimitExceeded` default -- [actions] use shared action; re-add finishers -- [meta] Fix changelog formatting bug -- [Deps] update `side-channel` -- [Dev Deps] update `es-value-fixtures`, `has-bigints`, `has-proto`, `has-symbols` -- [Tests] increase coverage - -## **6.13.1** -- [Fix] `stringify`: avoid a crash when a `filter` key is `null` -- [Fix] `utils.merge`: functions should not be stringified into keys -- [Fix] `parse`: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset -- [Fix] `stringify`: ensure a non-string `filter` does not crash -- [Refactor] use `__proto__` syntax instead of `Object.create` for null objects -- [Refactor] misc cleanup -- [Tests] `utils.merge`: add some coverage -- [Tests] fix a test case -- [actions] split out node 10-20, and 20+ -- [Dev Deps] update `es-value-fixtures`, `mock-property`, `object-inspect`, `tape` - -## **6.13.0** -- [New] `parse`: add `strictDepth` option (#511) -- [Tests] use `npm audit` instead of `aud` - -## **6.12.3** -- [Fix] `parse`: properly account for `strictNullHandling` when `allowEmptyArrays` -- [meta] fix changelog indentation - -## **6.12.2** -- [Fix] `parse`: parse encoded square brackets (#506) -- [readme] add CII best practices badge - -## **6.12.1** -- [Fix] `parse`: Disable `decodeDotInKeys` by default to restore previous behavior (#501) -- [Performance] `utils`: Optimize performance under large data volumes, reduce memory usage, and speed up processing (#502) -- [Refactor] `utils`: use `+=` -- [Tests] increase coverage - -## **6.12.0** - -- [New] `parse`/`stringify`: add `decodeDotInKeys`/`encodeDotKeys` options (#488) -- [New] `parse`: add `duplicates` option -- [New] `parse`/`stringify`: add `allowEmptyArrays` option to allow [] in object values (#487) -- [Refactor] `parse`/`stringify`: move allowDots config logic to its own variable -- [Refactor] `stringify`: move option-handling code into `normalizeStringifyOptions` -- [readme] update readme, add logos (#484) -- [readme] `stringify`: clarify default `arrayFormat` behavior -- [readme] fix line wrapping -- [readme] remove dead badges -- [Deps] update `side-channel` -- [meta] make the dist build 50% smaller -- [meta] add `sideEffects` flag -- [meta] run build in prepack, not prepublish -- [Tests] `parse`: remove useless tests; add coverage -- [Tests] `stringify`: increase coverage -- [Tests] use `mock-property` -- [Tests] `stringify`: improve coverage -- [Dev Deps] update `@ljharb/eslint-config `, `aud`, `has-override-mistake`, `has-property-descriptors`, `mock-property`, `npmignore`, `object-inspect`, `tape` -- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` -- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 - -## **6.11.2** -- [Fix] `parse`: Fix parsing when the global Object prototype is frozen (#473) -- [Tests] add passing test cases with empty keys (#473) - -## **6.11.1** -- [Fix] `stringify`: encode comma values more consistently (#463) -- [readme] add usage of `filter` option for injecting custom serialization, i.e. of custom types (#447) -- [meta] remove extraneous code backticks (#457) -- [meta] fix changelog markdown -- [actions] update checkout action -- [actions] restrict action permissions -- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` - -## **6.11.0** -- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442) -- [readme] fix version badge - -## **6.10.5** -- [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434) - -## **6.10.4** -- [Fix] `stringify`: with `arrayFormat: comma`, include an explicit `[]` on a single-item array (#441) -- [meta] use `npmignore` to autogenerate an npmignore file -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbol`, `object-inspect`, `tape` - -## **6.10.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [actions] reuse common workflows -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `tape` - -## **6.10.2** -- [Fix] `stringify`: actually fix cyclic references (#426) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [actions] update codecov uploader -- [actions] update workflows -- [Tests] clean up stringify tests slightly -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `safe-publish-latest`, `tape` - -## **6.10.1** -- [Fix] `stringify`: avoid exception on repeated object values (#402) - -## **6.10.0** -- [New] `stringify`: throw on cycles, instead of an infinite loop (#395, #394, #393) -- [New] `parse`: add `allowSparse` option for collapsing arrays with missing indices (#312) -- [meta] fix README.md (#399) -- [meta] only run `npm run dist` in publish, not install -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbols`, `tape` -- [Tests] fix tests on node v0.6 -- [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run` -- [Tests] Revert "[meta] ignore eclint transitive audit warning" - -## **6.9.7** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [Tests] clean up stringify tests slightly -- [meta] fix README.md (#399) -- Revert "[meta] ignore eclint transitive audit warning" -- [actions] backport actions from main -- [Dev Deps] backport updates from main - -## **6.9.6** -- [Fix] restore `dist` dir; mistakenly removed in d4f6c32 - -## **6.9.5** -- [Fix] `stringify`: do not encode parens for RFC1738 -- [Fix] `stringify`: fix arrayFormat comma with empty array/objects (#350) -- [Refactor] `format`: remove `util.assign` call -- [meta] add "Allow Edits" workflow; update rebase workflow -- [actions] switch Automatic Rebase workflow to `pull_request_target` event -- [Tests] `stringify`: add tests for #378 -- [Tests] migrate tests to Github Actions -- [Tests] run `nyc` on all tests; use `tape` runner -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `mkdirp`, `object-inspect`, `tape`; add `aud` - -## **6.9.4** -- [Fix] `stringify`: when `arrayFormat` is `comma`, respect `serializeDate` (#364) -- [Refactor] `stringify`: reduce branching (part of #350) -- [Refactor] move `maybeMap` to `utils` -- [Dev Deps] update `browserify`, `tape` - -## **6.9.3** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.9.2** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [meta] ignore eclint transitive audit warning -- [meta] fix indentation in package.json -- [meta] add tidelift marketing copy -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `has-symbols`, `tape`, `mkdirp`, `iconv-lite` -- [actions] add automatic rebasing / merge commit blocking - -## **6.9.1** -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [Fix] `parse`: with comma true, do not split non-string values (#334) -- [meta] add `funding` field -- [Dev Deps] update `eslint`, `@ljharb/eslint-config` -- [Tests] use shared travis-ci config - -## **6.9.0** -- [New] `parse`/`stringify`: Pass extra key/value argument to `decoder` (#333) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `evalmd` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] add `posttest` using `npx aud` to run `npm audit` without a lockfile -- [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16` -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray - -## **6.8.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Tests] clean up stringify tests slightly -- [Docs] add note and links for coercing primitive values (#408) -- [meta] fix README.md (#399) -- [actions] backport actions from main -- [Dev Deps] backport updates from main -- [Refactor] `stringify`: reduce branching -- [meta] do not publish workflow files - -## **6.8.2** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.8.1** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [fix] `parse`: with comma true, do not split non-string values (#334) -- [meta] add tidelift marketing copy -- [meta] add `funding` field -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `has-symbols`, `iconv-lite`, `mkdirp`, `object-inspect` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] use shared travis-ci configs -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray -- [actions] add automatic rebasing / merge commit blocking - -## **6.8.0** -- [New] add `depth=false` to preserve the original key; [Fix] `depth=0` should preserve the original key (#326) -- [New] [Fix] stringify symbols and bigints -- [Fix] ensure node 0.12 can stringify Symbols -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Refactor] `formats`: tiny bit of cleanup. -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `safe-publish-latest`, `iconv-lite`, `tape` -- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended (#326) -- [Tests] use `eclint` instead of `editorconfig-tools` -- [docs] readme: add security note -- [meta] add github sponsorship -- [meta] add FUNDING.yml -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause - -## **6.7.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] add note and links for coercing primitive values (#408) -- [meta] fix README.md (#399) -- [meta] do not publish workflow files -- [actions] backport actions from main -- [Dev Deps] backport updates from main -- [Tests] use `nyc` for coverage -- [Tests] clean up stringify tests slightly - -## **6.7.2** -- [Fix] proper comma parsing of URL-encoded commas (#361) -- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) - -## **6.7.1** -- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) -- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) -- [fix] `parse`: with comma true, do not split non-string values (#334) -- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Refactor] `formats`: tiny bit of cleanup. -- readme: add security note -- [meta] add tidelift marketing copy -- [meta] add `funding` field -- [meta] add FUNDING.yml -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `iconv-lite`, `mkdirp`, `object-inspect`, `browserify` -- [Tests] `parse`: add passing `arrayFormat` tests -- [Tests] use shared travis-ci configs -- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray -- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended -- [Tests] use `eclint` instead of `editorconfig-tools` -- [actions] add automatic rebasing / merge commit blocking - -## **6.7.0** -- [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219) -- [Fix] correctly parse nested arrays (#212) -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source, also with an array source -- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` -- [Refactor] `utils`: `isBuffer`: small tweak; add tests -- [Refactor] use cached `Array.isArray` -- [Refactor] `parse`/`stringify`: make a function to normalize the options -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] `stringify`/`utils`: cache `Array.isArray` -- [Tests] always use `String(x)` over `x.toString()` -- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 -- [Tests] temporarily allow coverage to fail - -## **6.6.1** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] correctly parse nested arrays -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` -- [Refactor] `formats`: tiny bit of cleanup. -- [Refactor] `utils`: `isBuffer`: small tweak; add tests -- [Refactor]: `stringify`/`utils`: cache `Array.isArray` -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] use cached `Array.isArray` -- [Refactor] `parse`/`stringify`: make a function to normalize the options -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] do not publish workflow files -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [meta] Fixes typo in CHANGELOG.md -- [actions] backport actions from main -- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 -- [Tests] always use `String(x)` over `x.toString()` -- [Dev Deps] backport from main - -## **6.6.0** -- [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268) -- [New] move two-value combine to a `utils` function (#189) -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` (#260) -- [Fix] `stringify`: do not crash in an obscure combo of `interpretNumericEntities`, a bad custom `decoder`, & `iso-8859-1` -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Refactor] `parse`: only need to reassign the var once -- [Refactor] `parse`/`stringify`: clean up `charset` options checking; fix defaults -- [Refactor] add missing defaults -- [Refactor] `parse`: one less `concat` call -- [Refactor] `utils`: `compactQueue`: make it explicitly side-effecting -- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape` -- [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS - -## **6.5.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] correctly parse nested arrays -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Refactor] `utils`: reduce observable [[Get]]s -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Refactor] `parse`: only need to reassign the var once -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] always use `String(x)` over `x.toString()` -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.5.2** -- [Fix] use `safer-buffer` instead of `Buffer` constructor -- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) -- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify` - -## **6.5.1** -- [Fix] Fix parsing & compacting very deep objects (#224) -- [Refactor] name utils functions -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` -- [Tests] up to `node` `v8.4`; use `nvm install-latest-npm` so newer npm doesn’t break older node -- [Tests] Use precise dist for Node.js 0.6 runtime (#225) -- [Tests] make 0.6 required, now that it’s passing -- [Tests] on `node` `v8.2`; fix npm on node 0.6 - -## **6.5.0** -- [New] add `utils.assign` -- [New] pass default encoder/decoder to custom encoder/decoder functions (#206) -- [New] `parse`/`stringify`: add `ignoreQueryPrefix`/`addQueryPrefix` options, respectively (#213) -- [Fix] Handle stringifying empty objects with addQueryPrefix (#217) -- [Fix] do not mutate `options` argument (#207) -- [Refactor] `parse`: cache index to reuse in else statement (#182) -- [Docs] add various badges to readme (#208) -- [Dev Deps] update `eslint`, `browserify`, `iconv-lite`, `tape` -- [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 -- [Tests] add `editorconfig-tools` - -## **6.4.1** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] use `safer-buffer` instead of `Buffer` constructor -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [readme] remove travis badge; add github actions/codecov badges; update URLs -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.4.0** -- [New] `qs.stringify`: add `encodeValuesOnly` option -- [Fix] follow `allowPrototypes` option during merge (#201, #201) -- [Fix] support keys starting with brackets (#202, #200) -- [Fix] chmod a-x -- [Dev Deps] update `eslint` -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds -- [eslint] reduce warnings - -## **6.3.3** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] fix for an impossible situation: when the formatter is called with a non-string value -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] use `safer-buffer` instead of `Buffer` constructor -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.3.2** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Dev Deps] update `eslint` -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.3.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties (thanks, @snyk!) -- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `iconv-lite`, `qs-iconv`, `tape` -- [Tests] on all node minors; improve test matrix -- [Docs] document stringify option `allowDots` (#195) -- [Docs] add empty object and array values example (#195) -- [Docs] Fix minor inconsistency/typo (#192) -- [Docs] document stringify option `sort` (#191) -- [Refactor] `stringify`: throw faster with an invalid encoder -- [Refactor] remove unnecessary escapes (#184) -- Remove contributing.md, since `qs` is no longer part of `hapi` (#183) - -## **6.3.0** -- [New] Add support for RFC 1738 (#174, #173) -- [New] `stringify`: Add `serializeDate` option to customize Date serialization (#159) -- [Fix] ensure `utils.merge` handles merging two arrays -- [Refactor] only constructors should be capitalized -- [Refactor] capitalized var names are for constructors only -- [Refactor] avoid using a sparse array -- [Robustness] `formats`: cache `String#replace` -- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`; add `safe-publish-latest` -- [Tests] up to `node` `v6.8`, `v4.6`; improve test matrix -- [Tests] flesh out arrayLimit/arrayFormat tests (#107) -- [Tests] skip Object.create tests when null objects are not available -- [Tests] Turn on eslint for test files (#175) - -## **6.2.4** -- [Fix] `parse`: ignore `__proto__` keys (#428) -- [Fix] `utils.merge`: avoid a crash with a null target and an array source -- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source -- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided -- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` -- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) -- [Refactor] use cached `Array.isArray` -- [Docs] Clarify the need for "arrayLimit" option -- [meta] fix README.md (#399) -- [meta] Clean up license text so it’s properly detected as BSD-3-Clause -- [meta] add FUNDING.yml -- [actions] backport actions from main -- [Tests] use `safer-buffer` instead of `Buffer` constructor -- [Tests] remove nonexistent tape option -- [Dev Deps] backport from main - -## **6.2.3** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.2.2** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## **6.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values -- [Refactor] Be explicit and use `Object.prototype.hasOwnProperty.call` -- [Tests] remove `parallelshell` since it does not reliably report failures -- [Tests] up to `node` `v6.3`, `v5.12` -- [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`, `qs-iconv` - -## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed) -- [New] pass Buffers to the encoder/decoder directly (#161) -- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) -- [Fix] fix compacting of nested sparse arrays (#150) - -## **6.1.2** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.1.1** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties - -## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed) -- [New] allowDots option for `stringify` (#151) -- [Fix] "sort" option should work at a depth of 3 or more (#151) -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## **6.0.4** -- [Fix] follow `allowPrototypes` option during merge (#201, #200) -- [Fix] chmod a-x -- [Fix] support keys starting with brackets (#202, #200) -- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds - -## **6.0.3** -- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties -- [Fix] Restore `dist` directory; will be removed in v7 (#148) - -## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed) -- Revert ES6 requirement and restore support for node down to v0.8. - -## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed) -- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json - -## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed) -- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4 - -## **5.2.1** -- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values - -## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed) -- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string - -## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed) -- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional -- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify - -## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed) -- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false -- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm - -## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed) -- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional - -## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed) -- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed) -- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties -- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost -- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing -- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign -- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/LICENSE.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/LICENSE.md deleted file mode 100644 index fecf6b6..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/LICENSE.md +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/README.md deleted file mode 100644 index 22c411d..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/README.md +++ /dev/null @@ -1,733 +0,0 @@ -

- qs -

- -# qs [![Version Badge][npm-version-svg]][package-url] - -[![github actions][actions-image]][actions-url] -[![coverage][codecov-image]][codecov-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/9058/badge)](https://bestpractices.coreinfrastructure.org/projects/9058) - -[![npm badge][npm-badge-png]][package-url] - -A querystring parsing and stringifying library with some added security. - -Lead Maintainer: [Jordan Harband](https://github.com/ljharb) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var qs = require('qs'); -var assert = require('assert'); - -var obj = qs.parse('a=c'); -assert.deepEqual(obj, { a: 'c' }); - -var str = qs.stringify(obj); -assert.equal(str, 'a=c'); -``` - -### Parsing Objects - -[](#preventEval) -```javascript -qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -assert.deepEqual(qs.parse('foo[bar]=baz'), { - foo: { - bar: 'baz' - } -}); -``` - -When using the `plainObjects` option the parsed value is returned as a null object, created via `{ __proto__: null }` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: - -```javascript -var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); -assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); -``` - -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. -*WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. -Always be careful with this option. - -```javascript -var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); -assert.deepEqual(protoObject, { a: { hasOwnProperty: 'b' } }); -``` - -URI encoded strings work too: - -```javascript -assert.deepEqual(qs.parse('a%5Bb%5D=c'), { - a: { b: 'c' } -}); -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { - foo: { - bar: { - baz: 'foobarbaz' - } - } -}); -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. -This means if you attempt to parse a string like `'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -var expected = { - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -}; -var string = 'a[b][c][d][e][f][g][h][i]=j'; -assert.deepEqual(qs.parse(string), expected); -``` - -This depth can be overridden by passing a `depth` option to `qs.parse(string, [options])`: - -```javascript -var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); -``` - -You can configure **qs** to throw an error when parsing nested input beyond this depth using the `strictDepth` option (defaulted to false): - -```javascript -try { - qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); -} catch (err) { - assert(err instanceof RangeError); - assert.strictEqual(err.message, 'Input depth exceeded depth option of 1 and strictDepth is true'); -} -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. The strictDepth option adds a layer of protection by throwing an error when the limit is exceeded, allowing you to catch and handle such cases. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); -assert.deepEqual(limited, { a: 'b' }); -``` - -If you want an error to be thrown whenever the a limit is exceeded (eg, `parameterLimit`, `arrayLimit`), set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. -```javascript -try { - qs.parse('a=1&b=2&c=3&d=4', { parameterLimit: 3, throwOnLimitExceeded: true }); -} catch (err) { - assert(err instanceof Error); - assert.strictEqual(err.message, 'Parameter limit exceeded. Only 3 parameters allowed.'); -} -``` - -When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `parameterLimit` and ignore the rest without throwing an error. - -To bypass the leading question mark, use `ignoreQueryPrefix`: - -```javascript -var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true }); -assert.deepEqual(prefixed, { a: 'b', c: 'd' }); -``` - -An optional delimiter can also be passed: - -```javascript -var delimited = qs.parse('a=b;c=d', { delimiter: ';' }); -assert.deepEqual(delimited, { a: 'b', c: 'd' }); -``` - -Delimiters can be a regular expression too: - -```javascript -var regexed = qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -assert.deepEqual(regexed, { a: 'b', c: 'd', e: 'f' }); -``` - -Option `allowDots` can be used to enable dot notation: - -```javascript -var withDots = qs.parse('a.b=c', { allowDots: true }); -assert.deepEqual(withDots, { a: { b: 'c' } }); -``` - -Option `decodeDotInKeys` can be used to decode dots in keys -Note: it implies `allowDots`, so `parse` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. - -```javascript -var withDots = qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { decodeDotInKeys: true }); -assert.deepEqual(withDots, { 'name.obj': { first: 'John', last: 'Doe' }}); -``` - -Option `allowEmptyArrays` can be used to allowing empty array values in object -```javascript -var withEmptyArrays = qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }); -assert.deepEqual(withEmptyArrays, { foo: [], bar: 'baz' }); -``` - -Option `duplicates` can be used to change the behavior when duplicate keys are encountered -```javascript -assert.deepEqual(qs.parse('foo=bar&foo=baz'), { foo: ['bar', 'baz'] }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), { foo: ['bar', 'baz'] }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), { foo: 'bar' }); -assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), { foo: 'baz' }); -``` - -If you have to deal with legacy browsers or services, there's also support for decoding percent-encoded octets as iso-8859-1: - -```javascript -var oldCharset = qs.parse('a=%A7', { charset: 'iso-8859-1' }); -assert.deepEqual(oldCharset, { a: '§' }); -``` - -Some services add an initial `utf8=✓` value to forms so that old Internet Explorer versions are more likely to submit the form as utf-8. -Additionally, the server can check the value against wrong encodings of the checkmark character and detect that a query string or `application/x-www-form-urlencoded` body was *not* sent as utf-8, eg. if the form had an `accept-charset` parameter or the containing page had a different character set. - -**qs** supports this mechanism via the `charsetSentinel` option. -If specified, the `utf8` parameter will be omitted from the returned object. -It will be used to switch to `iso-8859-1`/`utf-8` mode depending on how the checkmark is encoded. - -**Important**: When you specify both the `charset` option and the `charsetSentinel` option, the `charset` will be overridden when the request contains a `utf8` parameter from which the actual charset can be deduced. -In that sense the `charset` will behave as the default charset rather than the authoritative charset. - -```javascript -var detectedAsUtf8 = qs.parse('utf8=%E2%9C%93&a=%C3%B8', { - charset: 'iso-8859-1', - charsetSentinel: true -}); -assert.deepEqual(detectedAsUtf8, { a: 'Ăž' }); - -// Browsers encode the checkmark as ✓ when submitting as iso-8859-1: -var detectedAsIso8859_1 = qs.parse('utf8=%26%2310003%3B&a=%F8', { - charset: 'utf-8', - charsetSentinel: true -}); -assert.deepEqual(detectedAsIso8859_1, { a: 'Ăž' }); -``` - -If you want to decode the `&#...;` syntax to the actual character, you can specify the `interpretNumericEntities` option as well: - -```javascript -var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', { - charset: 'iso-8859-1', - interpretNumericEntities: true -}); -assert.deepEqual(detectedAsIso8859_1, { a: 'â˜ș' }); -``` - -It also works when the charset has been detected in `charsetSentinel` mode. - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -var withArray = qs.parse('a[]=b&a[]=c'); -assert.deepEqual(withArray, { a: ['b', 'c'] }); -``` - -You may specify an index as well: - -```javascript -var withIndexes = qs.parse('a[1]=c&a[0]=b'); -assert.deepEqual(withIndexes, { a: ['b', 'c'] }); -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number to create an array. -When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving their order: - -```javascript -var noSparse = qs.parse('a[1]=b&a[15]=c'); -assert.deepEqual(noSparse, { a: ['b', 'c'] }); -``` - -You may also use `allowSparse` option to parse sparse arrays: - -```javascript -var sparseArray = qs.parse('a[1]=2&a[3]=5', { allowSparse: true }); -assert.deepEqual(sparseArray, { a: [, '2', , '5'] }); -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -var withEmptyString = qs.parse('a[]=&a[]=b'); -assert.deepEqual(withEmptyString, { a: ['', 'b'] }); - -var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); -assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. -Any array members with an index of greater than `20` will instead be converted to an object with the index as the key. -This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array. - -```javascript -var withMaxIndex = qs.parse('a[100]=b'); -assert.deepEqual(withMaxIndex, { a: { '100': 'b' } }); -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); -assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); -``` - -If you want to throw an error whenever the array limit is exceeded, set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. -```javascript -try { - qs.parse('a[1]=b', { arrayLimit: 0, throwOnLimitExceeded: true }); -} catch (err) { - assert(err instanceof Error); - assert.strictEqual(err.message, 'Array limit exceeded. Only 0 elements allowed in an array.'); -} -``` - -When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `arrayLimit` and if the limit is exceeded, the array will instead be converted to an object with the index as the key - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); -assert.deepEqual(noParsingArrays, { a: { '0': 'b' } }); -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -var mixedNotation = qs.parse('a[0]=b&a[b]=c'); -assert.deepEqual(mixedNotation, { a: { '0': 'b', b: 'c' } }); -``` - -You can also create arrays of objects: - -```javascript -var arraysOfObjects = qs.parse('a[][b]=c'); -assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] }); -``` - -Some people use comma to join array, **qs** can parse it: -```javascript -var arraysOfObjects = qs.parse('a=b,c', { comma: true }) -assert.deepEqual(arraysOfObjects, { a: ['b', 'c'] }) -``` -(_this cannot convert nested objects, such as `a={b:1},{c:d}`_) - -### Parsing primitive/scalar values (numbers, booleans, null, etc) - -By default, all values are parsed as strings. -This behavior will not change and is explained in [issue #91](https://github.com/ljharb/qs/issues/91). - -```javascript -var primitiveValues = qs.parse('a=15&b=true&c=null'); -assert.deepEqual(primitiveValues, { a: '15', b: 'true', c: 'null' }); -``` - -If you wish to auto-convert values which look like numbers, booleans, and other values into their primitive counterparts, you can use the [query-types Express JS middleware](https://github.com/xpepermint/query-types) which will auto-convert all request query parameters. - -### Stringifying - -[](#preventEval) -```javascript -qs.stringify(object, [options]); -``` - -When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: - -```javascript -assert.equal(qs.stringify({ a: 'b' }), 'a=b'); -assert.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); -``` - -This encoding can be disabled by setting the `encode` option to `false`: - -```javascript -var unencoded = qs.stringify({ a: { b: 'c' } }, { encode: false }); -assert.equal(unencoded, 'a[b]=c'); -``` - -Encoding can be disabled for keys by setting the `encodeValuesOnly` option to `true`: -```javascript -var encodedValues = qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true } -); -assert.equal(encodedValues,'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h'); -``` - -This encoding can also be replaced by a custom encoding method set as `encoder` option: - -```javascript -var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str) { - // Passed in values `a`, `b`, `c` - return // Return encoded string -}}) -``` - -_(Note: the `encoder` option does not apply if `encode` is `false`)_ - -Analogue to the `encoder` there is a `decoder` option for `parse` to override decoding of properties and values: - -```javascript -var decoded = qs.parse('x=z', { decoder: function (str) { - // Passed in values `x`, `z` - return // Return decoded string -}}) -``` - -You can encode keys and values using different logic by using the type argument provided to the encoder: - -```javascript -var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str, defaultEncoder, charset, type) { - if (type === 'key') { - return // Encoded key - } else if (type === 'value') { - return // Encoded value - } -}}) -``` - -The type argument is also provided to the decoder: - -```javascript -var decoded = qs.parse('x=z', { decoder: function (str, defaultDecoder, charset, type) { - if (type === 'key') { - return // Decoded key - } else if (type === 'value') { - return // Decoded value - } -}}) -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. -Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, they follow the `arrayFormat` option, which defaults to `indices`: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`, or to be more explicit, the `arrayFormat` option to `repeat`: - -```javascript -qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array: - -```javascript -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' }) -// 'a=b,c' -``` - -Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse. - -When objects are stringified, by default they use bracket notation: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }); -// 'a[b][c]=d&a[b][e]=f' -``` - -You may override this to use dot notation by setting the `allowDots` option to `true`: - -```javascript -qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); -// 'a.b.c=d&a.b.e=f' -``` - -You may encode the dot notation in the keys of object with option `encodeDotInKeys` by setting it to `true`: -Note: it implies `allowDots`, so `stringify` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. -Caveat: when `encodeValuesOnly` is `true` as well as `encodeDotInKeys`, only dots in keys and nothing else will be encoded. -```javascript -qs.stringify({ "name.obj": { "first": "John", "last": "Doe" } }, { allowDots: true, encodeDotInKeys: true }) -// 'name%252Eobj.first=John&name%252Eobj.last=Doe' -``` - -You may allow empty array values by setting the `allowEmptyArrays` option to `true`: -```javascript -qs.stringify({ foo: [], bar: 'baz' }, { allowEmptyArrays: true }); -// 'foo[]&bar=baz' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -assert.equal(qs.stringify({ a: '' }), 'a='); -``` - -Key with no values (such as an empty object or array) will return nothing: - -```javascript -assert.equal(qs.stringify({ a: [] }), ''); -assert.equal(qs.stringify({ a: {} }), ''); -assert.equal(qs.stringify({ a: [{}] }), ''); -assert.equal(qs.stringify({ a: { b: []} }), ''); -assert.equal(qs.stringify({ a: { b: {}} }), ''); -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -assert.equal(qs.stringify({ a: null, b: undefined }), 'a='); -``` - -The query string may optionally be prepended with a question mark: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); -``` - -The delimiter may be overridden with stringify as well: - -```javascript -assert.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); -``` - -If you only want to override the serialization of `Date` objects, you can provide a `serializeDate` option: - -```javascript -var date = new Date(7); -assert.equal(qs.stringify({ a: date }), 'a=1970-01-01T00:00:00.007Z'.replace(/:/g, '%3A')); -assert.equal( - qs.stringify({ a: date }, { serializeDate: function (d) { return d.getTime(); } }), - 'a=7' -); -``` - -You may use the `sort` option to affect the order of parameter keys: - -```javascript -function alphabeticalSort(a, b) { - return a.localeCompare(b); -} -assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort }), 'a=c&b=f&z=y'); -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. -Otherwise, if you pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }); -// 'a=b&c=d&e[f]=123&e[g][0]=4' -qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }); -// 'a=b&e=f' -qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); -// 'a[0]=b&a[2]=d' -``` - -You could also use `filter` to inject custom serialization for user defined types. -Consider you're working with some api that expects query strings of the format for ranges: - -``` -https://domain.com/endpoint?range=30...70 -``` - -For which you model as: - -```javascript -class Range { - constructor(from, to) { - this.from = from; - this.to = to; - } -} -``` - -You could _inject_ a custom serializer to handle values of this type: - -```javascript -qs.stringify( - { - range: new Range(30, 70), - }, - { - filter: (prefix, value) => { - if (value instanceof Range) { - return `${value.from}...${value.to}`; - } - // serialize the usual way - return value; - }, - } -); -// range=30...70 -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -var withNull = qs.stringify({ a: null, b: '' }); -assert.equal(withNull, 'a=&b='); -``` - -Parsing does not distinguish between parameters with and without equal signs. -Both are converted to empty strings. - -```javascript -var equalsInsensitive = qs.parse('a&b='); -assert.deepEqual(equalsInsensitive, { a: '', b: '' }); -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -var strictNull = qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -assert.equal(strictNull, 'a&b='); -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -var parsedStrictNull = qs.parse('a&b=', { strictNullHandling: true }); -assert.deepEqual(parsedStrictNull, { a: null, b: '' }); -``` - -To completely skip rendering keys with `null` values, use the `skipNulls` flag: - -```javascript -var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); -assert.equal(nullsSkipped, 'a=b'); -``` - -If you're communicating with legacy systems, you can switch to `iso-8859-1` using the `charset` option: - -```javascript -var iso = qs.stringify({ ĂŠ: 'ĂŠ' }, { charset: 'iso-8859-1' }); -assert.equal(iso, '%E6=%E6'); -``` - -Characters that don't exist in `iso-8859-1` will be converted to numeric entities, similar to what browsers do: - -```javascript -var numeric = qs.stringify({ a: 'â˜ș' }, { charset: 'iso-8859-1' }); -assert.equal(numeric, 'a=%26%239786%3B'); -``` - -You can use the `charsetSentinel` option to announce the character by including an `utf8=✓` parameter with the proper encoding if the checkmark, similar to what Ruby on Rails and others do when submitting forms. - -```javascript -var sentinel = qs.stringify({ a: 'â˜ș' }, { charsetSentinel: true }); -assert.equal(sentinel, 'utf8=%E2%9C%93&a=%E2%98%BA'); - -var isoSentinel = qs.stringify({ a: 'ĂŠ' }, { charsetSentinel: true, charset: 'iso-8859-1' }); -assert.equal(isoSentinel, 'utf8=%26%2310003%3B&a=%E6'); -``` - -### Dealing with special character sets - -By default the encoding and decoding of characters is done in `utf-8`, and `iso-8859-1` support is also built in via the `charset` parameter. - -If you wish to encode querystrings to a different character set (i.e. -[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the -[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library: - -```javascript -var encoder = require('qs-iconv/encoder')('shift_jis'); -var shiftJISEncoded = qs.stringify({ a: 'ă“ă‚“ă«ăĄăŻïŒ' }, { encoder: encoder }); -assert.equal(shiftJISEncoded, 'a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I'); -``` - -This also works for decoding of query strings: - -```javascript -var decoder = require('qs-iconv/decoder')('shift_jis'); -var obj = qs.parse('a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I', { decoder: decoder }); -assert.deepEqual(obj, { a: 'ă“ă‚“ă«ăĄăŻïŒ' }); -``` - -### RFC 3986 and RFC 1738 space encoding - -RFC3986 used as default option and encodes ' ' to *%20* which is backward compatible. -In the same time, output can be stringified as per RFC1738 with ' ' equal to '+'. - -``` -assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c'); -assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c'); -``` - -## Security - -Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. - -## qs for enterprise - -Available as part of the Tidelift Subscription - -The maintainers of qs and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. -Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. -[Learn more.](https://tidelift.com/subscription/pkg/npm-qs?utm_source=npm-qs&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -[package-url]: https://npmjs.org/package/qs -[npm-version-svg]: https://versionbadg.es/ljharb/qs.svg -[deps-svg]: https://david-dm.org/ljharb/qs.svg -[deps-url]: https://david-dm.org/ljharb/qs -[dev-deps-svg]: https://david-dm.org/ljharb/qs/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/qs#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/qs.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/qs.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/qs.svg -[downloads-url]: https://npm-stat.com/charts.html?package=qs -[codecov-image]: https://codecov.io/gh/ljharb/qs/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/qs/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/qs -[actions-url]: https://github.com/ljharb/qs/actions - -## Acknowledgements - -qs logo by [NUMI](https://github.com/numi-hq/open-design): - -[NUMI Logo](https://numi.tech/?ref=qs) diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/dist/qs.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/dist/qs.js deleted file mode 100644 index f37989a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/dist/qs.js +++ /dev/null @@ -1,141 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var a=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,t.throwOnLimitExceeded?a+1:a);if(t.throwOnLimitExceeded&&o.length>a)throw new RangeError("Parameter limit exceeded. Only "+a+" parameter"+(1===a?"":"s")+" allowed.");var l,n=-1,s=t.charset;if(t.charsetSentinel)for(l=0;l-1&&(p=isArray(p)?[p]:p);var f=has.call(r,d);f&&"combine"===t.duplicates?r[d]=utils.combine(r[d],p):f&&"last"!==t.duplicates||(r[d]=p)}return r},parseObject=function(e,t,r,i){var a=0;if(e.length>0&&"[]"===e[e.length-1]){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var l=i?t:parseArrayValue(t,r,a),n=e.length-1;n>=0;--n){var s,d=e[n];if("[]"===d&&r.parseArrays)s=r.allowEmptyArrays&&(""===l||r.strictNullHandling&&null===l)?[]:utils.combine([],l);else{s=r.plainObjects?{__proto__:null}:{};var p="["===d.charAt(0)&&"]"===d.charAt(d.length-1)?d.slice(1,-1):d,c=r.decodeDotInKeys?p.replace(/%2E/g,"."):p,u=parseInt(c,10);r.parseArrays||""!==c?!isNaN(u)&&d!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(s=[])[u]=l:"__proto__"!==c&&(s[c]=l):s={0:l}}l=s}return l},parseKeys=function parseQueryStringKeys(e,t,r,i){if(e){var a=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(a),n=l?a.slice(0,l.index):a,s=[];if(n){if(!r.plainObjects&&has.call(Object.prototype,n)&&!r.allowPrototypes)return;s.push(n)}for(var d=0;r.depth>0&&null!==(l=o.exec(a))&&d0?g.join(",")||null:void 0}];else if(isArray(f))S=f;else{var N=Object.keys(g);S=u?N.sort(u):N}var T=l?String(r).replace(/\./g,"%2E"):String(r),O=o&&isArray(g)&&1===g.length?T+"[]":T;if(a&&isArray(g)&&0===g.length)return O+"[]";for(var k=0;k0?c+y:""}; - -},{"1":1,"46":46,"5":5}],5:[function(require,module,exports){ -"use strict";var formats=require(1),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,hexTable=function(){for(var e=[],r=0;r<256;++r)e.push("%"+((r<16?"0":"")+r.toString(16)).toUpperCase());return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n=limit?a.slice(i,i+limit):a,p=[],f=0;f=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||n===formats.RFC1738&&(40===s||41===s)?p[p.length]=u.charAt(f):s<128?p[p.length]=hexTable[s]:s<2048?p[p.length]=hexTable[192|s>>6]+hexTable[128|63&s]:s<55296||s>=57344?p[p.length]=hexTable[224|s>>12]+hexTable[128|s>>6&63]+hexTable[128|63&s]:(f+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(f)),p[p.length]=hexTable[240|s>>18]+hexTable[128|s>>12&63]+hexTable[128|s>>6&63]+hexTable[128|63&s])}c+=p.join("")}return c},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],o=0;o-1?callBindBasic([t]):t}; - -},{"10":10,"25":25}],25:[function(require,module,exports){ -"use strict";var undefined,$Object=require(22),$Error=require(16),$EvalError=require(15),$RangeError=require(17),$ReferenceError=require(18),$SyntaxError=require(19),$TypeError=require(20),$URIError=require(21),abs=require(34),floor=require(35),max=require(37),min=require(38),pow=require(39),round=require(40),sign=require(41),$Function=Function,getEvalledConstructor=function(r){try{return $Function('"use strict"; return ('+r+").constructor;")()}catch(r){}},$gOPD=require(30),$defineProperty=require(14),throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(r){try{return $gOPD(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,hasSymbols=require(31)(),getProto=require(28),$ObjectGPO=require(26),$ReflectGPO=require(27),$apply=require(8),$call=require(9),needsEval={},TypedArray="undefined"!=typeof Uint8Array&&getProto?getProto(Uint8Array):undefined,INTRINSICS={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?undefined:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?undefined:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols&&getProto?getProto((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":$Object,"%Object.getOwnPropertyDescriptor%":$gOPD,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols&&getProto?getProto((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols&&getProto?getProto(""[Symbol.iterator]()):undefined,"%Symbol%":hasSymbols?Symbol:undefined,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":$URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet,"%Function.prototype.call%":$call,"%Function.prototype.apply%":$apply,"%Object.defineProperty%":$defineProperty,"%Object.getPrototypeOf%":$ObjectGPO,"%Math.abs%":abs,"%Math.floor%":floor,"%Math.max%":max,"%Math.min%":min,"%Math.pow%":pow,"%Math.round%":round,"%Math.sign%":sign,"%Reflect.getPrototypeOf%":$ReflectGPO};if(getProto)try{null.error}catch(r){var errorProto=getProto(getProto(r));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function doEval(r){var e;if("%AsyncFunction%"===r)e=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)e=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)e=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var t=doEval("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===r){var o=doEval("%AsyncGenerator%");o&&getProto&&(e=getProto(o.prototype))}return INTRINSICS[r]=e,e},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=require(24),hasOwn=require(33),$concat=bind.call($call,Array.prototype.concat),$spliceApply=bind.call($apply,Array.prototype.splice),$replace=bind.call($call,String.prototype.replace),$strSlice=bind.call($call,String.prototype.slice),$exec=bind.call($call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(r){var e=$strSlice(r,0,1),t=$strSlice(r,-1);if("%"===e&&"%"!==t)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==e)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var o=[];return $replace(r,rePropName,(function(r,e,t,n){o[o.length]=t?$replace(n,reEscapeChar,"$1"):e||r})),o},getBaseIntrinsic=function getBaseIntrinsic(r,e){var t,o=r;if(hasOwn(LEGACY_ALIASES,o)&&(o="%"+(t=LEGACY_ALIASES[o])[0]+"%"),hasOwn(INTRINSICS,o)){var n=INTRINSICS[o];if(n===needsEval&&(n=doEval(o)),void 0===n&&!e)throw new $TypeError("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:t,name:o,value:n}}throw new $SyntaxError("intrinsic "+r+" does not exist!")};module.exports=function GetIntrinsic(r,e){if("string"!=typeof r||0===r.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,r))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=stringToPath(r),o=t.length>0?t[0]:"",n=getBaseIntrinsic("%"+o+"%",e),a=n.name,i=n.value,y=!1,p=n.alias;p&&(o=p[0],$spliceApply(t,$concat([0,1],p)));for(var s=1,d=!0;s=t.length){var c=$gOPD(i,f);i=(d=!!c)&&"get"in c&&!("originalValue"in c.get)?c.get:i[f]}else d=hasOwn(i,f),i=i[f];d&&!y&&(INTRINSICS[a]=i)}}return i}; - -},{"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"24":24,"26":26,"27":27,"28":28,"30":30,"31":31,"33":33,"34":34,"35":35,"37":37,"38":38,"39":39,"40":40,"41":41,"8":8,"9":9}],13:[function(require,module,exports){ -"use strict";var hasProtoAccessor,callBind=require(10),gOPD=require(30);try{hasProtoAccessor=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var desc=!!hasProtoAccessor&&gOPD&&gOPD(Object.prototype,"__proto__"),$Object=Object,$getPrototypeOf=$Object.getPrototypeOf;module.exports=desc&&"function"==typeof desc.get?callBind([desc.get]):"function"==typeof $getPrototypeOf&&function getDunder(t){return $getPrototypeOf(null==t?t:$Object(t))}; - -},{"10":10,"30":30}],30:[function(require,module,exports){ -"use strict";var $gOPD=require(29);if($gOPD)try{$gOPD([],"length")}catch(g){$gOPD=null}module.exports=$gOPD; - -},{"29":29}],14:[function(require,module,exports){ -"use strict";var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; - -},{}],15:[function(require,module,exports){ -"use strict";module.exports=EvalError; - -},{}],16:[function(require,module,exports){ -"use strict";module.exports=Error; - -},{}],17:[function(require,module,exports){ -"use strict";module.exports=RangeError; - -},{}],18:[function(require,module,exports){ -"use strict";module.exports=ReferenceError; - -},{}],19:[function(require,module,exports){ -"use strict";module.exports=SyntaxError; - -},{}],21:[function(require,module,exports){ -"use strict";module.exports=URIError; - -},{}],22:[function(require,module,exports){ -"use strict";module.exports=Object; - -},{}],23:[function(require,module,exports){ -"use strict";var ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,funcType="[object Function]",concatty=function concatty(t,n){for(var r=[],o=0;o-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,quotes={__proto__:null,double:'"',single:"'"},quoteREs={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function wrapQuotes(t,e,r){var n=r.quoteStyle||e,o=quotes[n];return o+t+o}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&!has(quotes,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var s=nameOf(t),f=arrObjKeys(t,inspect);return"[Function"+(s?": "+s:" (anonymous)")+"]"+(f.length>0?" { "+$join.call(f,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}var o=quoteREs[e.quoteStyle||"single"];return o.lastIndex=0,wrapQuotes($replace.call($replace.call(t,o,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o -1) { - return val.split(','); - } - - if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { - throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); - } - - return val; -}; - -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - -var parseValues = function parseQueryStringValues(str, options) { - var obj = { __proto__: null }; - - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split( - options.delimiter, - options.throwOnLimitExceeded ? limit + 1 : limit - ); - - if (options.throwOnLimitExceeded && parts.length > limit) { - throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); - } - - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key; - var val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - - val = utils.maybeMap( - parseArrayValue( - part.slice(pos + 1), - options, - isArray(obj[key]) ? obj[key].length : 0 - ), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(String(val)); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - var existing = has.call(obj, key); - if (existing && options.duplicates === 'combine') { - obj[key] = utils.combine(obj[key], val); - } else if (!existing || options.duplicates === 'last') { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options, valuesParsed) { - var currentArrayLength = 0; - if (chain.length > 0 && chain[chain.length - 1] === '[]') { - var parentKey = chain.slice(0, -1).join(''); - currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; - } - - var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) - ? [] - : utils.combine([], leaf); - } else { - obj = options.plainObjects ? { __proto__: null } : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; - var index = parseInt(decodedRoot, 10); - if (!options.parseArrays && decodedRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== decodedRoot - && String(index) === decodedRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else if (decodedRoot !== '__proto__') { - obj[decodedRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, check strictDepth option for throw, else just add whatever is left - - if (segment) { - if (options.strictDepth === true) { - throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); - } - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); -}; - -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { - throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { - throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); - } - - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; - - if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { - throw new TypeError('The duplicates option must be either combine, first, or last'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - duplicates: duplicates, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, - throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false - }; -}; - -module.exports = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? { __proto__: null } : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? { __proto__: null } : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/stringify.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/stringify.js deleted file mode 100644 index 2666eaf..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,356 +0,0 @@ -'use strict'; - -var getSideChannel = require('side-channel'); -var utils = require('./utils'); -var formats = require('./formats'); -var has = Object.prototype.hasOwnProperty; - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } -}; - -var isArray = Array.isArray; -var push = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); -}; - -var toISO = Date.prototype.toISOString; - -var defaultFormat = formats['default']; -var defaults = { - addQueryPrefix: false, - allowDots: false, - allowEmptyArrays: false, - arrayFormat: 'indices', - charset: 'utf-8', - charsetSentinel: false, - commaRoundTrip: false, - delimiter: '&', - encode: true, - encodeDotInKeys: false, - encoder: utils.encode, - encodeValuesOnly: false, - filter: void undefined, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; - -var sentinel = {}; - -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel -) { - var obj = object; - - var tmpSc = sideChannel; - var step = 0; - var findFlag = false; - while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { - // Where object last appeared in the ref tree - var pos = tmpSc.get(object); - step += 1; - if (typeof pos !== 'undefined') { - if (pos === step) { - throw new RangeError('Cyclic object value'); - } else { - findFlag = true; // Break while - } - } - if (typeof tmpSc.get(sentinel) === 'undefined') { - step = 0; - } - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray(obj)) { - // we need to join elements in - if (encodeValuesOnly && encoder) { - obj = utils.maybeMap(obj, encoder); - } - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; - } else if (isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); - - var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; - - if (allowEmptyArrays && isArray(obj) && obj.length === 0) { - return adjustedPrefix + '[]'; - } - - for (var j = 0; j < objKeys.length; ++j) { - var key = objKeys[j]; - var value = typeof key === 'object' && key && typeof key.value !== 'undefined' - ? key.value - : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); - var keyPrefix = isArray(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix - : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); - - sideChannel.set(object, step); - var valueSideChannel = getSideChannel(); - valueSideChannel.set(sentinel, sideChannel); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - commaRoundTrip, - allowEmptyArrays, - strictNullHandling, - skipNulls, - encodeDotInKeys, - generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; -}; - -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults; - } - - if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { - throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); - } - - if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { - throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); - } - - if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults.filter; - if (typeof opts.filter === 'function' || isArray(opts.filter)) { - filter = opts.filter; - } - - var arrayFormat; - if (opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if ('indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = defaults.arrayFormat; - } - - if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { - throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); - } - - var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, - allowDots: allowDots, - allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, - arrayFormat: arrayFormat, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - commaRoundTrip: !!opts.commaRoundTrip, - delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, - encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; - var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel = getSideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - var value = obj[key]; - - if (options.skipNulls && value === null) { - continue; - } - pushToArray(keys, stringify( - value, - key, - generateArrayPrefix, - commaRoundTrip, - options.allowEmptyArrays, - options.strictNullHandling, - options.skipNulls, - options.encodeDotInKeys, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/utils.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/utils.js deleted file mode 100644 index 2905ff0..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,268 +0,0 @@ -'use strict'; - -var formats = require('./formats'); - -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? { __proto__: null } : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object' && typeof source !== 'function') { - if (isArray(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ( - (options && (options.plainObjects || options.allowPrototypes)) - || !has.call(Object.prototype, source) - ) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray(target) && !isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray(target) && isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str, defaultDecoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } -}; - -var limit = 1024; - -/* eslint operator-linebreak: [2, "before"] */ - -var encode = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var j = 0; j < string.length; j += limit) { - var segment = string.length >= limit ? string.slice(j, j + limit) : string; - var arr = []; - - for (var i = 0; i < segment.length; ++i) { - var c = segment.charCodeAt(i); - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - arr[arr.length] = segment.charAt(i); - continue; - } - - if (c < 0x80) { - arr[arr.length] = hexTable[c]; - continue; - } - - if (c < 0x800) { - arr[arr.length] = hexTable[0xC0 | (c >> 6)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - arr[arr.length] = hexTable[0xE0 | (c >> 12)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); - - arr[arr.length] = hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - out += arr.join(''); - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -var combine = function combine(a, b) { - return [].concat(a, b); -}; - -var maybeMap = function maybeMap(val, fn) { - if (isArray(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/package.json deleted file mode 100644 index e4144d0..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "qs", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/ljharb/qs", - "version": "6.14.0", - "repository": { - "type": "git", - "url": "https://github.com/ljharb/qs.git" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "main": "lib/index.js", - "sideEffects": false, - "contributors": [ - { - "name": "Jordan Harband", - "email": "ljharb@gmail.com", - "url": "http://ljharb.codes" - } - ], - "keywords": [ - "querystring", - "qs", - "query", - "url", - "parse", - "stringify" - ], - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "side-channel": "^1.1.0" - }, - "devDependencies": { - "@browserify/envify": "^6.0.0", - "@browserify/uglifyify": "^6.0.0", - "@ljharb/eslint-config": "^21.1.1", - "browserify": "^16.5.2", - "bundle-collapser": "^1.4.0", - "common-shakeify": "~1.0.0", - "eclint": "^2.8.1", - "es-value-fixtures": "^1.7.0", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.3", - "glob": "=10.3.7", - "has-bigints": "^1.1.0", - "has-override-mistake": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "iconv-lite": "^0.5.1", - "in-publish": "^2.0.1", - "jackspeak": "=2.1.1", - "mkdirp": "^0.5.5", - "mock-property": "^1.1.0", - "module-deps": "^6.2.3", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.3", - "qs-iconv": "^1.0.4", - "safe-publish-latest": "^2.0.0", - "safer-buffer": "^2.1.2", - "tape": "^5.9.0", - "unassertify": "^3.0.1" - }, - "scripts": { - "prepack": "npmignore --auto --commentLines=autogenerated && npm run dist", - "prepublishOnly": "safe-publish-latest", - "prepublish": "not-in-publish || npm run prepublishOnly", - "pretest": "npm run --silent readme && npm run --silent lint", - "test": "npm run tests-only", - "tests-only": "nyc tape 'test/**/*.js'", - "posttest": "npx npm@'>=10.2' audit --production", - "readme": "evalmd README.md", - "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", - "lint": "eslint --ext=js,mjs .", - "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js" - }, - "license": "BSD-3-Clause", - "publishConfig": { - "ignore": [ - "!dist/*", - "bower.json", - "component.json", - ".github/workflows", - "logos", - "tea.yaml" - ] - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/empty-keys-cases.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/empty-keys-cases.js deleted file mode 100644 index 2b1190e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/empty-keys-cases.js +++ /dev/null @@ -1,267 +0,0 @@ -'use strict'; - -module.exports = { - emptyTestCases: [ - { - input: '&', - withEmptyKeys: {}, - stringifyOutput: { - brackets: '', - indices: '', - repeat: '' - }, - noEmptyKeys: {} - }, - { - input: '&&', - withEmptyKeys: {}, - stringifyOutput: { - brackets: '', - indices: '', - repeat: '' - }, - noEmptyKeys: {} - }, - { - input: '&=', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '&=&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '&=&=', - withEmptyKeys: { '': ['', ''] }, - stringifyOutput: { - brackets: '[]=&[]=', - indices: '[0]=&[1]=', - repeat: '=&=' - }, - noEmptyKeys: {} - }, - { - input: '&=&=&', - withEmptyKeys: { '': ['', ''] }, - stringifyOutput: { - brackets: '[]=&[]=', - indices: '[0]=&[1]=', - repeat: '=&=' - }, - noEmptyKeys: {} - }, - { - input: '=', - withEmptyKeys: { '': '' }, - noEmptyKeys: {}, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - } - }, - { - input: '=&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '=&&&', - withEmptyKeys: { '': '' }, - stringifyOutput: { - brackets: '=', - indices: '=', - repeat: '=' - }, - noEmptyKeys: {} - }, - { - input: '=&=&=&', - withEmptyKeys: { '': ['', '', ''] }, - stringifyOutput: { - brackets: '[]=&[]=&[]=', - indices: '[0]=&[1]=&[2]=', - repeat: '=&=&=' - }, - noEmptyKeys: {} - }, - { - input: '=&a[]=b&a[1]=c', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: '=a', - withEmptyKeys: { '': 'a' }, - noEmptyKeys: {}, - stringifyOutput: { - brackets: '=a', - indices: '=a', - repeat: '=a' - } - }, - { - input: 'a==a', - withEmptyKeys: { a: '=a' }, - noEmptyKeys: { a: '=a' }, - stringifyOutput: { - brackets: 'a==a', - indices: 'a==a', - repeat: 'a==a' - } - }, - { - input: '=&a[]=b', - withEmptyKeys: { '': '', a: ['b'] }, - stringifyOutput: { - brackets: '=&a[]=b', - indices: '=&a[0]=b', - repeat: '=&a=b' - }, - noEmptyKeys: { a: ['b'] } - }, - { - input: '=&a[]=b&a[]=c&a[2]=d', - withEmptyKeys: { '': '', a: ['b', 'c', 'd'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c&a[]=d', - indices: '=&a[0]=b&a[1]=c&a[2]=d', - repeat: '=&a=b&a=c&a=d' - }, - noEmptyKeys: { a: ['b', 'c', 'd'] } - }, - { - input: '=a&=b', - withEmptyKeys: { '': ['a', 'b'] }, - stringifyOutput: { - brackets: '[]=a&[]=b', - indices: '[0]=a&[1]=b', - repeat: '=a&=b' - }, - noEmptyKeys: {} - }, - { - input: '=a&foo=b', - withEmptyKeys: { '': 'a', foo: 'b' }, - noEmptyKeys: { foo: 'b' }, - stringifyOutput: { - brackets: '=a&foo=b', - indices: '=a&foo=b', - repeat: '=a&foo=b' - } - }, - { - input: 'a[]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a[]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a[0]=b&a=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a=b&a[]=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: 'a=b&a[0]=c&=', - withEmptyKeys: { '': '', a: ['b', 'c'] }, - stringifyOutput: { - brackets: '=&a[]=b&a[]=c', - indices: '=&a[0]=b&a[1]=c', - repeat: '=&a=b&a=c' - }, - noEmptyKeys: { a: ['b', 'c'] } - }, - { - input: '[]=a&[]=b& []=1', - withEmptyKeys: { '': ['a', 'b'], ' ': ['1'] }, - stringifyOutput: { - brackets: '[]=a&[]=b& []=1', - indices: '[0]=a&[1]=b& [0]=1', - repeat: '=a&=b& =1' - }, - noEmptyKeys: { 0: 'a', 1: 'b', ' ': ['1'] } - }, - { - input: '[0]=a&[1]=b&a[0]=1&a[1]=2', - withEmptyKeys: { '': ['a', 'b'], a: ['1', '2'] }, - noEmptyKeys: { 0: 'a', 1: 'b', a: ['1', '2'] }, - stringifyOutput: { - brackets: '[]=a&[]=b&a[]=1&a[]=2', - indices: '[0]=a&[1]=b&a[0]=1&a[1]=2', - repeat: '=a&=b&a=1&a=2' - } - }, - { - input: '[deep]=a&[deep]=2', - withEmptyKeys: { '': { deep: ['a', '2'] } - }, - stringifyOutput: { - brackets: '[deep][]=a&[deep][]=2', - indices: '[deep][0]=a&[deep][1]=2', - repeat: '[deep]=a&[deep]=2' - }, - noEmptyKeys: { deep: ['a', '2'] } - }, - { - input: '%5B0%5D=a&%5B1%5D=b', - withEmptyKeys: { '': ['a', 'b'] }, - stringifyOutput: { - brackets: '[]=a&[]=b', - indices: '[0]=a&[1]=b', - repeat: '=a&=b' - }, - noEmptyKeys: { 0: 'a', 1: 'b' } - } - ] -}; diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/parse.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/parse.js deleted file mode 100644 index 32cdfd8..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/parse.js +++ /dev/null @@ -1,1276 +0,0 @@ -'use strict'; - -var test = require('tape'); -var hasPropertyDescriptors = require('has-property-descriptors')(); -var iconv = require('iconv-lite'); -var mockProperty = require('mock-property'); -var hasOverrideMistake = require('has-override-mistake')(); -var SaferBuffer = require('safer-buffer').Buffer; -var v = require('es-value-fixtures'); -var inspect = require('object-inspect'); -var emptyTestCases = require('./empty-keys-cases').emptyTestCases; -var hasProto = require('has-proto')(); - -var qs = require('../'); -var utils = require('../lib/utils'); - -test('parse()', function (t) { - t.test('parses a simple string', function (st) { - st.deepEqual(qs.parse('0=foo'), { 0: 'foo' }); - st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' }); - st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } }); - st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } }); - st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } }); - st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null }); - st.deepEqual(qs.parse('foo'), { foo: '' }); - st.deepEqual(qs.parse('foo='), { foo: '' }); - st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' }); - st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' }); - st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' }); - st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' }); - st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' }); - st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null }); - st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' }); - st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), { - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - st.end(); - }); - - t.test('comma: false', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c'), { a: 'b,c' }); - st.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }); - st.end(); - }); - - t.test('comma: true', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b,c', { comma: true }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a=c', { comma: true }), { a: ['b', 'c'] }); - st.end(); - }); - - t.test('allows enabling dot notation', function (st) { - st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); - st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); - - st.end(); - }); - - t.test('decode dot keys correctly', function (st) { - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: false, decodeDotInKeys: false }), - { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name.obj.first=John&name.obj.last=Doe', { allowDots: true, decodeDotInKeys: false }), - { name: { obj: { first: 'John', last: 'Doe' } } }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: false }), - { 'name%2Eobj': { first: 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: true }), - { 'name.obj': { first: 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys true' - ); - - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { allowDots: false, decodeDotInKeys: false } - ), - { 'name%2Eobj%2Esubobject.first%2Egodly%2Ename': 'John', 'name%2Eobj%2Esubobject.last': 'Doe' }, - 'with allowDots false and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse( - 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', - { allowDots: true, decodeDotInKeys: false } - ), - { name: { obj: { subobject: { first: { godly: { name: 'John' } }, last: 'Doe' } } } }, - 'with allowDots true and decodeDotInKeys false' - ); - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { allowDots: true, decodeDotInKeys: true } - ), - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - 'with allowDots true and decodeDotInKeys true' - ); - st.deepEqual( - qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe'), - { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, - 'with allowDots and decodeDotInKeys undefined' - ); - - st.end(); - }); - - t.test('decodes dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { - st.deepEqual( - qs.parse( - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - { decodeDotInKeys: true } - ), - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - 'with allowDots undefined and decodeDotInKeys true' - ); - - st.end(); - }); - - t.test('throws when decodeDotInKeys is not of type boolean', function (st) { - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 0 }); }, - TypeError - ); - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allows empty arrays in obj values', function (st) { - st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }), { foo: [], bar: 'baz' }); - st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: false }), { foo: [''], bar: 'baz' }); - - st.end(); - }); - - t.test('throws when allowEmptyArrays is not of type boolean', function (st) { - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 0 }); }, - TypeError - ); - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allowEmptyArrays + strictNullHandling', function (st) { - st.deepEqual( - qs.parse('testEmptyArray[]', { strictNullHandling: true, allowEmptyArrays: true }), - { testEmptyArray: [] } - ); - - st.end(); - }); - - t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string'); - t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string'); - t.deepEqual( - qs.parse('a[b][c][d][e][f][g][h]=i'), - { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, - 'defaults to a depth of 5' - ); - - t.test('only parses one level when depth = 1', function (st) { - st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } }); - st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } }); - st.end(); - }); - - t.test('uses original key when depth = 0', function (st) { - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' }); - st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: 0 }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); - st.end(); - }); - - t.test('uses original key when depth = false', function (st) { - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' }); - st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: false }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); - st.end(); - }); - - t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array'); - - t.test('parses an explicit array', function (st) { - st.deepEqual(qs.parse('a[]=b'), { a: ['b'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] }); - st.end(); - }); - - t.test('parses a mix of simple and explicit arrays', function (st) { - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); - - st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); - - st.end(); - }); - - t.test('parses a nested array', function (st) { - st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } }); - st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } }); - st.end(); - }); - - t.test('allows to specify array indices', function (st) { - st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] }); - st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] }); - st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } }); - st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] }); - st.end(); - }); - - t.test('limits specific array indices to arrayLimit', function (st) { - st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } }); - - st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] }); - st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } }); - st.end(); - }); - - t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number'); - - t.test('supports encoded = signs', function (st) { - st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' }); - st.end(); - }); - - t.test('is ok with url encoded strings', function (st) { - st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } }); - st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } }); - st.end(); - }); - - t.test('allows brackets in the value', function (st) { - st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' }); - st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' }); - st.end(); - }); - - t.test('allows empty values', function (st) { - st.deepEqual(qs.parse(''), {}); - st.deepEqual(qs.parse(null), {}); - st.deepEqual(qs.parse(undefined), {}); - st.end(); - }); - - t.test('transforms arrays to objects', function (st) { - st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } }); - st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } }); - st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } }); - st.end(); - }); - - t.test('transforms arrays to objects (dot notation)', function (st) { - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); - st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] }); - st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] }); - st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); - st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } }); - st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); - st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - st.end(); - }); - - t.test('correctly prunes undefined values when converting an array to an object', function (st) { - st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } }); - st.end(); - }); - - t.test('supports malformed uri characters', function (st) { - st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null }); - st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' }); - st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' }); - st.end(); - }); - - t.test('doesn\'t produce empty keys', function (st) { - st.deepEqual(qs.parse('_r=1&'), { _r: '1' }); - st.end(); - }); - - t.test('cannot access Object prototype', function (st) { - qs.parse('constructor[prototype][bad]=bad'); - qs.parse('bad[constructor][prototype][bad]=bad'); - st.equal(typeof Object.prototype.bad, 'undefined'); - st.end(); - }); - - t.test('parses arrays of objects', function (st) { - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] }); - st.end(); - }); - - t.test('allows for empty strings in arrays', function (st) { - st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] }); - - st.deepEqual( - qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 20 + array indices: null then empty string works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', null, 'c', ''] }, - 'with arrayLimit 0 + array brackets: null then empty string works' - ); - - st.deepEqual( - qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 20 + array indices: empty string then null works' - ); - st.deepEqual( - qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), - { a: ['b', '', 'c', null] }, - 'with arrayLimit 0 + array brackets: empty string then null works' - ); - - st.deepEqual( - qs.parse('a[]=&a[]=b&a[]=c'), - { a: ['', 'b', 'c'] }, - 'array brackets: empty strings work' - ); - st.end(); - }); - - t.test('compacts sparse arrays', function (st) { - st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] }); - st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] }); - st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] }); - st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] }); - st.end(); - }); - - t.test('parses sparse arrays', function (st) { - /* eslint no-sparse-arrays: 0 */ - st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] }); - st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] }); - st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] }); - st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] }); - st.end(); - }); - - t.test('parses semi-parsed strings', function (st) { - st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } }); - st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }); - st.end(); - }); - - t.test('parses buffers correctly', function (st) { - var b = SaferBuffer.from('test'); - st.deepEqual(qs.parse({ a: b }), { a: b }); - st.end(); - }); - - t.test('parses jquery-param strings', function (st) { - // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8' - var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8'; - var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] }; - st.deepEqual(qs.parse(encoded), expected); - st.end(); - }); - - t.test('continues parsing when no parent is found', function (st) { - st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' }); - st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' }); - st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' }); - st.end(); - }); - - t.test('does not error when parsing a very long array', function (st) { - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str = str + '&' + str; - } - - st.doesNotThrow(function () { - qs.parse(str); - }); - - st.end(); - }); - - t.test('does not throw when a native prototype has an enumerable property', function (st) { - st.intercept(Object.prototype, 'crash', { value: '' }); - st.intercept(Array.prototype, 'crash', { value: '' }); - - st.doesNotThrow(qs.parse.bind(null, 'a=b')); - st.deepEqual(qs.parse('a=b'), { a: 'b' }); - st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); - st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); - - st.end(); - }); - - t.test('parses a string with an alternative string delimiter', function (st) { - st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('parses a string with an alternative RegExp delimiter', function (st) { - st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not use non-splittable objects as delimiters', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding parameter limit', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' }); - st.end(); - }); - - t.test('allows setting the parameter limit to Infinity', function (st) { - st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('allows overriding array limit', function (st) { - st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); - st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: ['b'] }); - - st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); - st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } }); - - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: -1 }), { a: { 0: 'b', 1: 'c' } }); - st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); - - st.end(); - }); - - t.test('allows disabling array parsing', function (st) { - var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false }); - st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } }); - st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array'); - - var emptyBrackets = qs.parse('a[]=b', { parseArrays: false }); - st.deepEqual(emptyBrackets, { a: { 0: 'b' } }); - st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array'); - - st.end(); - }); - - t.test('allows for query string prefix', function (st) { - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); - st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); - - st.end(); - }); - - t.test('parses an object', function (st) { - var input = { - 'user[name]': { 'pop[bob]': 3 }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses string with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] }); - st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } }); - st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' }); - st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' }); - st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null }); - - // test cases inversed from from stringify tests - st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] }); - st.deepEqual(qs.parse('a[]=c'), { a: ['c'] }); - st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] }); - - st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] }); - st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] }); - st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] }); - - st.end(); - }); - - t.test('parses values with comma as array divider', function (st) { - st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' }); - st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] }); - st.end(); - }); - - t.test('use number decoder, parses string that has one number with comma option enabled', function (st) { - var decoder = function (str, defaultDecoder, charset, type) { - if (!isNaN(Number(str))) { - return parseFloat(str); - } - return defaultDecoder(str, defaultDecoder, charset, type); - }; - - st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 }); - st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 }); - - st.end(); - }); - - t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); - st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); - - st.end(); - }); - - t.test('parses url-encoded brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=', { comma: true }), { foo: [['1', '2', '3'], ''] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); - st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); - - st.end(); - }); - - t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) { - st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' }); - st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] }); - st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] }); - - st.end(); - }); - - t.test('parses an object in dot notation', function (st) { - var input = { - 'user.name': { 'pop[bob]': 3 }, - 'user.email.': null - }; - - var expected = { - user: { - name: { 'pop[bob]': 3 }, - email: null - } - }; - - var result = qs.parse(input, { allowDots: true }); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('parses an object and not child values', function (st) { - var input = { - 'user[name]': { 'pop[bob]': { test: 3 } }, - 'user[email]': null - }; - - var expected = { - user: { - name: { 'pop[bob]': { test: 3 } }, - email: null - } - }; - - var result = qs.parse(input); - - st.deepEqual(result, expected); - st.end(); - }); - - t.test('does not blow up when Buffer global is missing', function (st) { - var restore = mockProperty(global, 'Buffer', { 'delete': true }); - - var result = qs.parse('a=b&c=d'); - - restore(); - - st.deepEqual(result, { a: 'b', c: 'd' }); - st.end(); - }); - - t.test('does not crash when parsing circular references', function (st) { - var a = {}; - a.b = a; - - var parsed; - - st.doesNotThrow(function () { - parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - st.equal('bar' in parsed.foo, true); - st.equal('baz' in parsed.foo, true); - st.equal(parsed.foo.bar, 'baz'); - st.deepEqual(parsed.foo.baz, a); - st.end(); - }); - - t.test('does not crash when parsing deep objects', function (st) { - var parsed; - var str = 'foo'; - - for (var i = 0; i < 5000; i++) { - str += '[p]'; - } - - str += '=bar'; - - st.doesNotThrow(function () { - parsed = qs.parse(str, { depth: 5000 }); - }); - - st.equal('foo' in parsed, true, 'parsed has "foo" property'); - - var depth = 0; - var ref = parsed.foo; - while ((ref = ref.p)) { - depth += 1; - } - - st.equal(depth, 5000, 'parsed is 5000 properties deep'); - - st.end(); - }); - - t.test('parses null objects correctly', { skip: !hasProto }, function (st) { - var a = { __proto__: null, b: 'c' }; - - st.deepEqual(qs.parse(a), { b: 'c' }); - var result = qs.parse({ a: a }); - st.equal('a' in result, true, 'result has "a" property'); - st.deepEqual(result.a, a); - st.end(); - }); - - t.test('parses dates correctly', function (st) { - var now = new Date(); - st.deepEqual(qs.parse({ a: now }), { a: now }); - st.end(); - }); - - t.test('parses regular expressions correctly', function (st) { - var re = /^test$/; - st.deepEqual(qs.parse({ a: re }), { a: re }); - st.end(); - }); - - t.test('does not allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {}); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {}); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: false }), - {}, - 'bare "toString" results in {}' - ); - - st.end(); - }); - - t.test('can allow overwriting prototype properties', function (st) { - st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }); - st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }); - - st.deepEqual( - qs.parse('toString', { allowPrototypes: true }), - { toString: '' }, - 'bare "toString" results in { toString: "" }' - ); - - st.end(); - }); - - t.test('does not crash when the global Object prototype is frozen', { skip: !hasPropertyDescriptors || !hasOverrideMistake }, function (st) { - // We can't actually freeze the global Object prototype as that will interfere with other tests, and once an object is frozen, it - // can't be unfrozen. Instead, we add a new non-writable property to simulate this. - st.teardown(mockProperty(Object.prototype, 'frozenProp', { value: 'foo', nonWritable: true, nonEnumerable: true })); - - st['throws']( - function () { - var obj = {}; - obj.frozenProp = 'bar'; - }, - // node < 6 has a different error message - /^TypeError: Cannot assign to read only property 'frozenProp' of (?:object '#'|#)/, - 'regular assignment of an inherited non-writable property throws' - ); - - var parsed; - st.doesNotThrow( - function () { - parsed = qs.parse('frozenProp', { allowPrototypes: false }); - }, - 'parsing a nonwritable Object.prototype property does not throw' - ); - - st.deepEqual(parsed, {}, 'bare "frozenProp" results in {}'); - - st.end(); - }); - - t.test('params starting with a closing bracket', function (st) { - st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); - st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); - st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); - st.end(); - }); - - t.test('params starting with a starting bracket', function (st) { - st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); - st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); - st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); - st.end(); - }); - - t.test('add keys to objects', function (st) { - st.deepEqual( - qs.parse('a[b]=c&a=d'), - { a: { b: 'c', d: true } }, - 'can add keys to objects' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString'), - { a: { b: 'c' } }, - 'can not overwrite prototype' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { allowPrototypes: true }), - { a: { b: 'c', toString: true } }, - 'can overwrite prototype with allowPrototypes true' - ); - - st.deepEqual( - qs.parse('a[b]=c&a=toString', { plainObjects: true }), - { __proto__: null, a: { __proto__: null, b: 'c', toString: true } }, - 'can overwrite prototype with plainObjects true' - ); - - st.end(); - }); - - t.test('dunder proto is ignored', function (st) { - var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42'; - var result = qs.parse(payload, { allowPrototypes: true }); - - st.deepEqual( - result, - { - categories: { - length: '42' - } - }, - 'silent [[Prototype]] payload' - ); - - var plainResult = qs.parse(payload, { allowPrototypes: true, plainObjects: true }); - - st.deepEqual( - plainResult, - { - __proto__: null, - categories: { - __proto__: null, - length: '42' - } - }, - 'silent [[Prototype]] payload: plain objects' - ); - - var query = qs.parse('categories[__proto__]=cats&categories[__proto__]=dogs&categories[some][json]=toInject', { allowPrototypes: true }); - - st.notOk(Array.isArray(query.categories), 'is not an array'); - st.notOk(query.categories instanceof Array, 'is not instanceof an array'); - st.deepEqual(query.categories, { some: { json: 'toInject' } }); - st.equal(JSON.stringify(query.categories), '{"some":{"json":"toInject"}}', 'stringifies as a non-array'); - - st.deepEqual( - qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true }), - { - foo: { - bar: 'stuffs' - } - }, - 'hidden values' - ); - - st.deepEqual( - qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true, plainObjects: true }), - { - __proto__: null, - foo: { - __proto__: null, - bar: 'stuffs' - } - }, - 'hidden values: plain objects' - ); - - st.end(); - }); - - t.test('can return null objects', { skip: !hasProto }, function (st) { - var expected = { - __proto__: null, - a: { - __proto__: null, - b: 'c', - hasOwnProperty: 'd' - } - }; - st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); - st.deepEqual(qs.parse(null, { plainObjects: true }), { __proto__: null }); - var expectedArray = { - __proto__: null, - a: { - __proto__: null, - 0: 'b', - c: 'd' - } - }; - st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); - st.end(); - }); - - t.test('can parse with custom encoding', function (st) { - st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', { - decoder: function (str) { - var reg = /%([0-9A-F]{2})/ig; - var result = []; - var parts = reg.exec(str); - while (parts) { - result.push(parseInt(parts[1], 16)); - parts = reg.exec(str); - } - return String(iconv.decode(SaferBuffer.from(result), 'shift_jis')); - } - }), { 県: '性é˜Șćșœ' }); - st.end(); - }); - - t.test('receives the default decoder as a second argument', function (st) { - st.plan(1); - qs.parse('a', { - decoder: function (str, defaultDecoder) { - st.equal(defaultDecoder, utils.decode); - } - }); - st.end(); - }); - - t.test('throws error with wrong decoder', function (st) { - st['throws'](function () { - qs.parse({}, { decoder: 'string' }); - }, new TypeError('Decoder has to be a function.')); - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.parse('a[b]=true', options); - st.deepEqual(options, {}); - st.end(); - }); - - t.test('throws if an invalid charset is specified', function (st) { - st['throws'](function () { - qs.parse('a=b', { charset: 'foobar' }); - }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); - st.end(); - }); - - t.test('parses an iso-8859-1 string if asked to', function (st) { - st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { 'Âą': 'œ' }); - st.end(); - }); - - var urlEncodedCheckmarkInUtf8 = '%E2%9C%93'; - var urlEncodedOSlashInUtf8 = '%C3%B8'; - var urlEncodedNumCheckmark = '%26%2310003%3B'; - var urlEncodedNumSmiley = '%26%239786%3B'; - - t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { Ăž: 'Ăž' }); - st.end(); - }); - - t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'Þ': 'Þ' }); - st.end(); - }); - - t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) { - st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'Þ' }); - st.end(); - }); - - t.test('ignores an utf8 sentinel with an unknown value', function (st) { - st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { Ăž: 'Ăž' }); - st.end(); - }); - - t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { Ăž: 'Ăž' }); - st.end(); - }); - - t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) { - st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'Þ': 'Þ' }); - st.end(); - }); - - t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: 'â˜ș' }); - st.end(); - }); - - t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, { - charset: 'iso-8859-1', - decoder: function (str, defaultDecoder, charset) { - return str ? defaultDecoder(str, defaultDecoder, charset) : null; - }, - interpretNumericEntities: true - }), { foo: null, bar: 'â˜ș' }); - st.end(); - }); - - t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '☺' }); - st.end(); - }); - - t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) { - st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '☺' }); - st.end(); - }); - - t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) { - st.deepEqual( - qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }), - { b: '', a: ['1,â˜ș'] } - ); - - st.end(); - }); - - t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) { - st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' }); - st.end(); - }); - - t.test('allows for decoding keys and values differently', function (st) { - var decoder = function (str, defaultDecoder, charset, type) { - if (type === 'key') { - return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase(); - } - if (type === 'value') { - return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase(); - } - throw 'this should never happen! type: ' + type; - }; - - st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' }); - st.end(); - }); - - t.test('parameter limit tests', function (st) { - st.test('does not throw error when within parameter limit', function (sst) { - var result = qs.parse('a=1&b=2&c=3', { parameterLimit: 5, throwOnLimitExceeded: true }); - sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses without errors'); - sst.end(); - }); - - st.test('throws error when throwOnLimitExceeded is present but not boolean', function (sst) { - sst['throws']( - function () { - qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: 'true' }); - }, - new TypeError('`throwOnLimitExceeded` option must be a boolean'), - 'throws error when throwOnLimitExceeded is present and not boolean' - ); - sst.end(); - }); - - st.test('throws error when parameter limit exceeded', function (sst) { - sst['throws']( - function () { - qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: true }); - }, - new RangeError('Parameter limit exceeded. Only 3 parameters allowed.'), - 'throws error when parameter limit is exceeded' - ); - sst.end(); - }); - - st.test('silently truncates when throwOnLimitExceeded is not given', function (sst) { - var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3 }); - sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); - sst.end(); - }); - - st.test('silently truncates when parameter limit exceeded without error', function (sst) { - var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3, throwOnLimitExceeded: false }); - sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); - sst.end(); - }); - - st.test('allows unlimited parameters when parameterLimit set to Infinity', function (sst) { - var result = qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: Infinity }); - sst.deepEqual(result, { a: '1', b: '2', c: '3', d: '4', e: '5', f: '6' }, 'parses all parameters without truncation'); - sst.end(); - }); - - st.end(); - }); - - t.test('array limit tests', function (st) { - st.test('does not throw error when array is within limit', function (sst) { - var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 5, throwOnLimitExceeded: true }); - sst.deepEqual(result, { a: ['1', '2', '3'] }, 'parses array without errors'); - sst.end(); - }); - - st.test('throws error when throwOnLimitExceeded is present but not boolean for array limit', function (sst) { - sst['throws']( - function () { - qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: 'true' }); - }, - new TypeError('`throwOnLimitExceeded` option must be a boolean'), - 'throws error when throwOnLimitExceeded is present and not boolean for array limit' - ); - sst.end(); - }); - - st.test('throws error when array limit exceeded', function (sst) { - sst['throws']( - function () { - qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: true }); - }, - new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), - 'throws error when array limit is exceeded' - ); - sst.end(); - }); - - st.test('converts array to object if length is greater than limit', function (sst) { - var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 }); - - sst.deepEqual(result, { a: { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6' } }, 'parses into object if array length is greater than limit'); - sst.end(); - }); - - st.end(); - }); - - t.end(); -}); - -test('parses empty keys', function (t) { - emptyTestCases.forEach(function (testCase) { - t.test('skips empty string key with ' + testCase.input, function (st) { - st.deepEqual(qs.parse(testCase.input), testCase.noEmptyKeys); - - st.end(); - }); - }); -}); - -test('`duplicates` option', function (t) { - v.nonStrings.concat('not a valid option').forEach(function (invalidOption) { - if (typeof invalidOption !== 'undefined') { - t['throws']( - function () { qs.parse('', { duplicates: invalidOption }); }, - TypeError, - 'throws on invalid option: ' + inspect(invalidOption) - ); - } - }); - - t.deepEqual( - qs.parse('foo=bar&foo=baz'), - { foo: ['bar', 'baz'] }, - 'duplicates: default, combine' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), - { foo: ['bar', 'baz'] }, - 'duplicates: combine' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), - { foo: 'bar' }, - 'duplicates: first' - ); - - t.deepEqual( - qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), - { foo: 'baz' }, - 'duplicates: last' - ); - - t.end(); -}); - -test('qs strictDepth option - throw cases', function (t) { - t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); - }, - RangeError, - 'throws RangeError' - ); - st.end(); - }); - - t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true }); - }, - RangeError, - 'throws RangeError' - ); - st.end(); - }); - - t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true }); - }, - RangeError, - 'throws RangeError' - ); - st.end(); - }); - - t.test('throws an exception for different types of values with strictDepth: true', function (st) { - st['throws']( - function () { - qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true }); - }, - RangeError, - 'throws RangeError' - ); - st.end(); - }); - -}); - -test('qs strictDepth option - non-throw cases', function (t) { - t.test('when depth is 0 and strictDepth true, do not throw', function (st) { - st.doesNotThrow( - function () { - qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true }); - }, - RangeError, - 'does not throw RangeError' - ); - st.end(); - }); - - t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true }); - st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); - } - ); - st.end(); - }); - - t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); - st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'parses with depth limit'); - } - ); - st.end(); - }); - - t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b]=c', { depth: 1 }); - st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); - } - ); - st.end(); - }); - - t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) { - st.doesNotThrow( - function () { - var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true }); - st.deepEqual(result, { a: { b: { c: 'd' } } }, 'parses correctly'); - } - ); - st.end(); - }); -}); diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/stringify.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/stringify.js deleted file mode 100644 index 7253144..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,1306 +0,0 @@ -'use strict'; - -var test = require('tape'); -var qs = require('../'); -var utils = require('../lib/utils'); -var iconv = require('iconv-lite'); -var SaferBuffer = require('safer-buffer').Buffer; -var hasSymbols = require('has-symbols'); -var mockProperty = require('mock-property'); -var emptyTestCases = require('./empty-keys-cases').emptyTestCases; -var hasProto = require('has-proto')(); -var hasBigInt = require('has-bigints')(); - -test('stringify()', function (t) { - t.test('stringifies a querystring object', function (st) { - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: 1 }), 'a=1'); - st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2'); - st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z'); - st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC'); - st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80'); - st.equal(qs.stringify({ a: 'ڐ' }), 'a=%D7%90'); - st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7'); - st.end(); - }); - - t.test('stringifies falsy values', function (st) { - st.equal(qs.stringify(undefined), ''); - st.equal(qs.stringify(null), ''); - st.equal(qs.stringify(null, { strictNullHandling: true }), ''); - st.equal(qs.stringify(false), ''); - st.equal(qs.stringify(0), ''); - st.end(); - }); - - t.test('stringifies symbols', { skip: !hasSymbols() }, function (st) { - st.equal(qs.stringify(Symbol.iterator), ''); - st.equal(qs.stringify([Symbol.iterator]), '0=Symbol%28Symbol.iterator%29'); - st.equal(qs.stringify({ a: Symbol.iterator }), 'a=Symbol%28Symbol.iterator%29'); - st.equal( - qs.stringify({ a: [Symbol.iterator] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[]=Symbol%28Symbol.iterator%29' - ); - st.end(); - }); - - t.test('stringifies bigints', { skip: !hasBigInt }, function (st) { - var three = BigInt(3); - var encodeWithN = function (value, defaultEncoder, charset) { - var result = defaultEncoder(value, defaultEncoder, charset); - return typeof value === 'bigint' ? result + 'n' : result; - }; - st.equal(qs.stringify(three), ''); - st.equal(qs.stringify([three]), '0=3'); - st.equal(qs.stringify([three], { encoder: encodeWithN }), '0=3n'); - st.equal(qs.stringify({ a: three }), 'a=3'); - st.equal(qs.stringify({ a: three }, { encoder: encodeWithN }), 'a=3n'); - st.equal( - qs.stringify({ a: [three] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[]=3' - ); - st.equal( - qs.stringify({ a: [three] }, { encodeValuesOnly: true, encoder: encodeWithN, arrayFormat: 'brackets' }), - 'a[]=3n' - ); - st.end(); - }); - - t.test('encodes dot in key of object when encodeDotInKeys and allowDots is provided', function (st) { - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: false } - ), - 'name.obj%5Bfirst%5D=John&name.obj%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: false } - ), - 'name.obj.first=John&name.obj.last=Doe', - 'with allowDots true and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: true } - ), - 'name%252Eobj%5Bfirst%5D=John&name%252Eobj%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys true' - ); - st.equal( - qs.stringify( - { 'name.obj': { first: 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: true } - ), - 'name%252Eobj.first=John&name%252Eobj.last=Doe', - 'with allowDots true and encodeDotInKeys true' - ); - - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: false } - ), - 'name.obj.subobject%5Bfirst.godly.name%5D=John&name.obj.subobject%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: false } - ), - 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', - 'with allowDots false and encodeDotInKeys false' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: false, encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject%5Bfirst.godly.name%5D=John&name%252Eobj%252Esubobject%5Blast%5D=Doe', - 'with allowDots false and encodeDotInKeys true' - ); - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { allowDots: true, encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - 'with allowDots true and encodeDotInKeys true' - ); - - st.end(); - }); - - t.test('should encode dot in key of object, and automatically set allowDots to `true` when encodeDotInKeys is true and allowDots in undefined', function (st) { - st.equal( - qs.stringify( - { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, - { encodeDotInKeys: true } - ), - 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', - 'with allowDots undefined and encodeDotInKeys true' - ); - st.end(); - }); - - t.test('should encode dot in key of object when encodeDotInKeys and allowDots is provided, and nothing else when encodeValuesOnly is provided', function (st) { - st.equal( - qs.stringify({ 'name.obj': { first: 'John', last: 'Doe' } }, { - encodeDotInKeys: true, allowDots: true, encodeValuesOnly: true - }), - 'name%2Eobj.first=John&name%2Eobj.last=Doe' - ); - - st.equal( - qs.stringify({ 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, { allowDots: true, encodeDotInKeys: true, encodeValuesOnly: true }), - 'name%2Eobj%2Esubobject.first%2Egodly%2Ename=John&name%2Eobj%2Esubobject.last=Doe' - ); - - st.end(); - }); - - t.test('throws when `commaRoundTrip` is not a boolean', function (st) { - st['throws']( - function () { qs.stringify({}, { commaRoundTrip: 'not a boolean' }); }, - TypeError, - 'throws when `commaRoundTrip` is not a boolean' - ); - - st.end(); - }); - - t.test('throws when `encodeDotInKeys` is not a boolean', function (st) { - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 0 }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('adds query prefix', function (st) { - st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); - st.end(); - }); - - t.test('with query prefix, outputs blank string given an empty object', function (st) { - st.equal(qs.stringify({}, { addQueryPrefix: true }), ''); - st.end(); - }); - - t.test('stringifies nested falsy values', function (st) { - st.equal(qs.stringify({ a: { b: { c: null } } }), 'a%5Bb%5D%5Bc%5D='); - st.equal(qs.stringify({ a: { b: { c: null } } }, { strictNullHandling: true }), 'a%5Bb%5D%5Bc%5D'); - st.equal(qs.stringify({ a: { b: { c: false } } }), 'a%5Bb%5D%5Bc%5D=false'); - st.end(); - }); - - t.test('stringifies a nested object', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - st.end(); - }); - - t.test('`allowDots` option: stringifies a nested object with dots notation', function (st) { - st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); - st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); - st.end(); - }); - - t.test('stringifies an array value', function (st) { - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'indices' }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'brackets' }), - 'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma' }), - 'a=b%2Cc%2Cd', - 'comma => comma' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma', commaRoundTrip: true }), - 'a=b%2Cc%2Cd', - 'comma round trip => comma' - ); - st.equal( - qs.stringify({ a: ['b', 'c', 'd'] }), - 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', - 'default => indices' - ); - st.end(); - }); - - t.test('`skipNulls` option', function (st) { - st.equal( - qs.stringify({ a: 'b', c: null }, { skipNulls: true }), - 'a=b', - 'omits nulls when asked' - ); - - st.equal( - qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), - 'a%5Bb%5D=c', - 'omits nested nulls when asked' - ); - - st.end(); - }); - - t.test('omits array indices when asked', function (st) { - st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); - - st.end(); - }); - - t.test('omits object key/value pair when value is empty array', function (st) { - st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); - - st.end(); - }); - - t.test('should not omit object key/value pair when value is empty array and when asked', function (st) { - st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); - st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: false }), 'b=zz'); - st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: true }), 'a[]&b=zz'); - - st.end(); - }); - - t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 'foobar' }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 0 }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: NaN }); }, - TypeError - ); - - st['throws']( - function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: null }); }, - TypeError - ); - - st.end(); - }); - - t.test('allowEmptyArrays + strictNullHandling', function (st) { - st.equal( - qs.stringify( - { testEmptyArray: [] }, - { strictNullHandling: true, allowEmptyArrays: true } - ), - 'testEmptyArray[]' - ); - - st.end(); - }); - - t.test('stringifies an array value with one item vs multiple items', function (st) { - st.test('non-array item', function (s2t) { - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); - s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true }), 'a=c'); - - s2t.end(); - }); - - st.test('array with a single item', function (s2t) { - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array - s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c'); - - s2t.end(); - }); - - st.test('array with multiple items', function (s2t) { - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c&a[1]=d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c&a[]=d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c,d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c,d'); - s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true }), 'a[0]=c&a[1]=d'); - - s2t.end(); - }); - - st.test('array with multiple items with a comma inside', function (s2t) { - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c%2Cd,e'); - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma' }), 'a=c%2Cd%2Ce'); - - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd,e'); - s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd%2Ce'); - - s2t.end(); - }); - - st.end(); - }); - - t.test('stringifies a nested array value', function (st) { - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[b][0]=c&a[b][1]=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[b][]=c&a[b][]=d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a[b]=c,d'); - st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true }), 'a[b][0]=c&a[b][1]=d'); - st.end(); - }); - - t.test('stringifies comma and empty array values', function (st) { - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'indices' }), 'a[0]=,&a[1]=&a[2]=c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'brackets' }), 'a[]=,&a[]=&a[]=c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'comma' }), 'a=,,,c,d%'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'repeat' }), 'a=,&a=&a=c,d%'); - - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=%2C&a[1]=&a[2]=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=%2C&a[]=&a[]=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C,,c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); - - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a%5B0%5D=%2C&a%5B1%5D=&a%5B2%5D=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a%5B%5D=%2C&a%5B%5D=&a%5B%5D=c%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C%2C%2Cc%2Cd%25'); - st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); - - st.end(); - }); - - t.test('stringifies comma and empty non-array values', function (st) { - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'indices' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'brackets' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'comma' }), 'a=,&b=&c=c,d%'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'repeat' }), 'a=,&b=&c=c,d%'); - - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); - - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); - st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); - - st.end(); - }); - - t.test('stringifies a nested array value with dots notation', function (st) { - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'indices' } - ), - 'a.b[0]=c&a.b[1]=d', - 'indices: stringifies with dots + indices' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'brackets' } - ), - 'a.b[]=c&a.b[]=d', - 'brackets: stringifies with dots + brackets' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true, arrayFormat: 'comma' } - ), - 'a.b=c,d', - 'comma: stringifies with dots + comma' - ); - st.equal( - qs.stringify( - { a: { b: ['c', 'd'] } }, - { allowDots: true, encodeValuesOnly: true } - ), - 'a.b[0]=c&a.b[1]=d', - 'default: stringifies with dots + indices' - ); - st.end(); - }); - - t.test('stringifies an object inside an array', function (st) { - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), - 'a[0][b]=c', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), - 'a[b]=c', - 'repeat => repeat' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), - 'a[][b]=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 'c' }] }, { encodeValuesOnly: true }), - 'a[0][b]=c', - 'default => indices' - ); - - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), - 'a[0][b][c][0]=1', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), - 'a[b][c]=1', - 'repeat => repeat' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), - 'a[][b][c][]=1', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: { c: [1] } }] }, { encodeValuesOnly: true }), - 'a[0][b][c][0]=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an array with mixed objects and primitives', function (st) { - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'indices => indices' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'a[][b]=1&a[]=2&a[]=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), - '???', - 'brackets => brackets', - { skip: 'TODO: figure out what this should do' } - ); - st.equal( - qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true }), - 'a[0][b]=1&a[1]=2&a[2]=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('stringifies an object inside an array with dots notation', function (st) { - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b=c', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b=c', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: 'c' }] }, - { allowDots: true, encode: false } - ), - 'a[0].b=c', - 'default => indices' - ); - - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'indices' } - ), - 'a[0].b.c[0]=1', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false, arrayFormat: 'brackets' } - ), - 'a[].b.c[]=1', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: [{ b: { c: [1] } }] }, - { allowDots: true, encode: false } - ), - 'a[0].b.c[0]=1', - 'default => indices' - ); - - st.end(); - }); - - t.test('does not omit object keys when indices = false', function (st) { - st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when indices=true', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses indices notation for arrays when arrayFormat=indices', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); - st.end(); - }); - - t.test('uses repeat notation for arrays when arrayFormat=repeat', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); - st.end(); - }); - - t.test('uses brackets notation for arrays when arrayFormat=brackets', function (st) { - st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); - st.end(); - }); - - t.test('stringifies a complicated object', function (st) { - st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e'); - st.end(); - }); - - t.test('stringifies an empty value', function (st) { - st.equal(qs.stringify({ a: '' }), 'a='); - st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a'); - - st.equal(qs.stringify({ a: '', b: '' }), 'a=&b='); - st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b='); - - st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D='); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D'); - st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D='); - - st.end(); - }); - - t.test('stringifies an empty array in different arrayFormat', function (st) { - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false }), 'b[0]=&c=c'); - // arrayFormat default - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices' }), 'b[0]=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c'); - // with strictNullHandling - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c'); - // with skipNulls - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', skipNulls: true }), 'c=c'); - st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', skipNulls: true }), 'c=c'); - - st.end(); - }); - - t.test('stringifies a null object', { skip: !hasProto }, function (st) { - st.equal(qs.stringify({ __proto__: null, a: 'b' }), 'a=b'); - st.end(); - }); - - t.test('returns an empty string for invalid input', function (st) { - st.equal(qs.stringify(undefined), ''); - st.equal(qs.stringify(false), ''); - st.equal(qs.stringify(null), ''); - st.equal(qs.stringify(''), ''); - st.end(); - }); - - t.test('stringifies an object with a null object as a child', { skip: !hasProto }, function (st) { - st.equal(qs.stringify({ a: { __proto__: null, b: 'c' } }), 'a%5Bb%5D=c'); - st.end(); - }); - - t.test('drops keys with a value of undefined', function (st) { - st.equal(qs.stringify({ a: undefined }), ''); - - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D'); - st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D='); - st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D='); - st.end(); - }); - - t.test('url encodes values', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.end(); - }); - - t.test('stringifies a date', function (st) { - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - st.equal(qs.stringify({ a: now }), str); - st.end(); - }); - - t.test('stringifies the weird object from qs', function (st) { - st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - st.end(); - }); - - t.test('skips properties that are part of the object prototype', function (st) { - st.intercept(Object.prototype, 'crash', { value: 'test' }); - - st.equal(qs.stringify({ a: 'b' }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); - - st.end(); - }); - - t.test('stringifies boolean values', function (st) { - st.equal(qs.stringify({ a: true }), 'a=true'); - st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true'); - st.equal(qs.stringify({ b: false }), 'b=false'); - st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false'); - st.end(); - }); - - t.test('stringifies buffer values', function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test'); - st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test'); - st.end(); - }); - - t.test('stringifies an object using an alternative delimiter', function (st) { - st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); - st.end(); - }); - - t.test('does not blow up when Buffer global is missing', function (st) { - var restore = mockProperty(global, 'Buffer', { 'delete': true }); - - var result = qs.stringify({ a: 'b', c: 'd' }); - - restore(); - - st.equal(result, 'a=b&c=d'); - st.end(); - }); - - t.test('does not crash when parsing circular references', function (st) { - var a = {}; - a.b = a; - - st['throws']( - function () { qs.stringify({ 'foo[bar]': 'baz', 'foo[baz]': a }); }, - /RangeError: Cyclic object value/, - 'cyclic values throw' - ); - - var circular = { - a: 'value' - }; - circular.a = circular; - st['throws']( - function () { qs.stringify(circular); }, - /RangeError: Cyclic object value/, - 'cyclic values throw' - ); - - var arr = ['a']; - st.doesNotThrow( - function () { qs.stringify({ x: arr, y: arr }); }, - 'non-cyclic values do not throw' - ); - - st.end(); - }); - - t.test('non-circular duplicated references can still work', function (st) { - var hourOfDay = { - 'function': 'hour_of_day' - }; - - var p1 = { - 'function': 'gte', - arguments: [hourOfDay, 0] - }; - var p2 = { - 'function': 'lte', - arguments: [hourOfDay, 23] - }; - - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), - 'filters[$and][0][function]=gte&filters[$and][0][arguments][0][function]=hour_of_day&filters[$and][0][arguments][1]=0&filters[$and][1][function]=lte&filters[$and][1][arguments][0][function]=hour_of_day&filters[$and][1][arguments][1]=23' - ); - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), - 'filters[$and][][function]=gte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=0&filters[$and][][function]=lte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=23' - ); - st.equal( - qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), - 'filters[$and][function]=gte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=0&filters[$and][function]=lte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=23' - ); - - st.end(); - }); - - t.test('selects properties when filter=array', function (st) { - st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b'); - st.equal(qs.stringify({ a: 1 }, { filter: [] }), ''); - - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'indices' } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'indices => indices' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2], arrayFormat: 'brackets' } - ), - 'a%5Bb%5D%5B%5D=1&a%5Bb%5D%5B%5D=3', - 'brackets => brackets' - ); - st.equal( - qs.stringify( - { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, - { filter: ['a', 'b', 0, 2] } - ), - 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', - 'default => indices' - ); - - st.end(); - }); - - t.test('supports custom representations when filter=function', function (st) { - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - calls += 1; - if (calls === 1) { - st.equal(prefix, '', 'prefix is empty'); - st.equal(value, obj); - } else if (prefix === 'c') { - return void 0; - } else if (value instanceof Date) { - st.equal(prefix, 'e[f]'); - return value.getTime(); - } - return value; - }; - - st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000'); - st.equal(calls, 5); - st.end(); - }); - - t.test('can disable uri encoding', function (st) { - st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b'); - st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c'); - st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c'); - st.end(); - }); - - t.test('can sort the keys', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y'); - st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); - st.end(); - }); - - t.test('can sort the keys at depth 3 or more too', function (st) { - var sort = function (a, b) { - return a.localeCompare(b); - }; - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: sort, encode: false } - ), - 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb' - ); - st.equal( - qs.stringify( - { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, - { sort: null, encode: false } - ), - 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b' - ); - st.end(); - }); - - t.test('can stringify with custom encoding', function (st) { - st.equal(qs.stringify({ 県: '性é˜Șćșœ', '': '' }, { - encoder: function (str) { - if (str.length === 0) { - return ''; - } - var buf = iconv.encode(str, 'shiftjis'); - var result = []; - for (var i = 0; i < buf.length; ++i) { - result.push(buf.readUInt8(i).toString(16)); - } - return '%' + result.join('%'); - } - }), '%8c%a7=%91%e5%8d%e3%95%7b&='); - st.end(); - }); - - t.test('receives the default encoder as a second argument', function (st) { - st.plan(8); - - qs.stringify({ a: 1, b: new Date(), c: true, d: [1] }, { - encoder: function (str) { - st.match(typeof str, /^(?:string|number|boolean)$/); - return ''; - } - }); - - st.end(); - }); - - t.test('receives the default encoder as a second argument', function (st) { - st.plan(2); - - qs.stringify({ a: 1 }, { - encoder: function (str, defaultEncoder) { - st.equal(defaultEncoder, utils.encode); - } - }); - - st.end(); - }); - - t.test('throws error with wrong encoder', function (st) { - st['throws'](function () { - qs.stringify({}, { encoder: 'string' }); - }, new TypeError('Encoder has to be a function.')); - st.end(); - }); - - t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) { - st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, { - encoder: function (buffer) { - if (typeof buffer === 'string') { - return buffer; - } - return String.fromCharCode(buffer.readUInt8(0) + 97); - } - }), 'a=b'); - - st.equal(qs.stringify({ a: SaferBuffer.from('a b') }, { - encoder: function (buffer) { - return buffer; - } - }), 'a=a b'); - st.end(); - }); - - t.test('serializeDate option', function (st) { - var date = new Date(); - st.equal( - qs.stringify({ a: date }), - 'a=' + date.toISOString().replace(/:/g, '%3A'), - 'default is toISOString' - ); - - var mutatedDate = new Date(); - mutatedDate.toISOString = function () { - throw new SyntaxError(); - }; - st['throws'](function () { - mutatedDate.toISOString(); - }, SyntaxError); - st.equal( - qs.stringify({ a: mutatedDate }), - 'a=' + Date.prototype.toISOString.call(mutatedDate).replace(/:/g, '%3A'), - 'toISOString works even when method is not locally present' - ); - - var specificDate = new Date(6); - st.equal( - qs.stringify( - { a: specificDate }, - { serializeDate: function (d) { return d.getTime() * 7; } } - ), - 'a=42', - 'custom serializeDate function called' - ); - - st.equal( - qs.stringify( - { a: [date] }, - { - serializeDate: function (d) { return d.getTime(); }, - arrayFormat: 'comma' - } - ), - 'a=' + date.getTime(), - 'works with arrayFormat comma' - ); - st.equal( - qs.stringify( - { a: [date] }, - { - serializeDate: function (d) { return d.getTime(); }, - arrayFormat: 'comma', - commaRoundTrip: true - } - ), - 'a%5B%5D=' + date.getTime(), - 'works with arrayFormat comma' - ); - - st.end(); - }); - - t.test('RFC 1738 serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC1738 }), 'a=b+c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC1738 }), 'a+b=c+d'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC1738 }), 'a+b=a+b'); - - st.equal(qs.stringify({ 'foo(ref)': 'bar' }, { format: qs.formats.RFC1738 }), 'foo(ref)=bar'); - - st.end(); - }); - - t.test('RFC 3986 spaces serialization', function (st) { - st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC3986 }), 'a=b%20c'); - st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC3986 }), 'a%20b=c%20d'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC3986 }), 'a%20b=a%20b'); - - st.end(); - }); - - t.test('Backward compatibility to RFC 3986', function (st) { - st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); - st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }), 'a%20b=a%20b'); - - st.end(); - }); - - t.test('Edge cases and unknown formats', function (st) { - ['UFO1234', false, 1234, null, {}, []].forEach(function (format) { - st['throws']( - function () { - qs.stringify({ a: 'b c' }, { format: format }); - }, - new TypeError('Unknown format option provided.') - ); - }); - st.end(); - }); - - t.test('encodeValuesOnly', function (st) { - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'indices' } - ), - 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h', - 'encodeValuesOnly + indices' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'brackets' } - ), - 'a=b&c[]=d&c[]=e%3Df&f[][]=g&f[][]=h', - 'encodeValuesOnly + brackets' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, - { encodeValuesOnly: true, arrayFormat: 'repeat' } - ), - 'a=b&c=d&c=e%3Df&f=g&f=h', - 'encodeValuesOnly + repeat' - ); - - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'indices' } - ), - 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h', - 'no encodeValuesOnly + indices' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'brackets' } - ), - 'a=b&c%5B%5D=d&c%5B%5D=e&f%5B%5D%5B%5D=g&f%5B%5D%5B%5D=h', - 'no encodeValuesOnly + brackets' - ); - st.equal( - qs.stringify( - { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, - { arrayFormat: 'repeat' } - ), - 'a=b&c=d&c=e&f=g&f=h', - 'no encodeValuesOnly + repeat' - ); - - st.end(); - }); - - t.test('encodeValuesOnly - strictNullHandling', function (st) { - st.equal( - qs.stringify( - { a: { b: null } }, - { encodeValuesOnly: true, strictNullHandling: true } - ), - 'a[b]' - ); - st.end(); - }); - - t.test('throws if an invalid charset is specified', function (st) { - st['throws'](function () { - qs.stringify({ a: 'b' }, { charset: 'foobar' }); - }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); - st.end(); - }); - - t.test('respects a charset of iso-8859-1', function (st) { - st.equal(qs.stringify({ ĂŠ: 'ĂŠ' }, { charset: 'iso-8859-1' }), '%E6=%E6'); - st.end(); - }); - - t.test('encodes unrepresentable chars as numeric entities in iso-8859-1 mode', function (st) { - st.equal(qs.stringify({ a: 'â˜ș' }, { charset: 'iso-8859-1' }), 'a=%26%239786%3B'); - st.end(); - }); - - t.test('respects an explicit charset of utf-8 (the default)', function (st) { - st.equal(qs.stringify({ a: 'ĂŠ' }, { charset: 'utf-8' }), 'a=%C3%A6'); - st.end(); - }); - - t.test('`charsetSentinel` option', function (st) { - st.equal( - qs.stringify({ a: 'ĂŠ' }, { charsetSentinel: true, charset: 'utf-8' }), - 'utf8=%E2%9C%93&a=%C3%A6', - 'adds the right sentinel when instructed to and the charset is utf-8' - ); - - st.equal( - qs.stringify({ a: 'ĂŠ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), - 'utf8=%26%2310003%3B&a=%E6', - 'adds the right sentinel when instructed to and the charset is iso-8859-1' - ); - - st.end(); - }); - - t.test('does not mutate the options argument', function (st) { - var options = {}; - qs.stringify({}, options); - st.deepEqual(options, {}); - st.end(); - }); - - t.test('strictNullHandling works with custom filter', function (st) { - var filter = function (prefix, value) { - return value; - }; - - var options = { strictNullHandling: true, filter: filter }; - st.equal(qs.stringify({ key: null }, options), 'key'); - st.end(); - }); - - t.test('strictNullHandling works with null serializeDate', function (st) { - var serializeDate = function () { - return null; - }; - var options = { strictNullHandling: true, serializeDate: serializeDate }; - var date = new Date(); - st.equal(qs.stringify({ key: date }, options), 'key'); - st.end(); - }); - - t.test('allows for encoding keys and values differently', function (st) { - var encoder = function (str, defaultEncoder, charset, type) { - if (type === 'key') { - return defaultEncoder(str, defaultEncoder, charset, type).toLowerCase(); - } - if (type === 'value') { - return defaultEncoder(str, defaultEncoder, charset, type).toUpperCase(); - } - throw 'this should never happen! type: ' + type; - }; - - st.deepEqual(qs.stringify({ KeY: 'vAlUe' }, { encoder: encoder }), 'key=VALUE'); - st.end(); - }); - - t.test('objects inside arrays', function (st) { - var obj = { a: { b: { c: 'd', e: 'f' } } }; - var withArray = { a: { b: [{ c: 'd', e: 'f' }] } }; - - st.equal(qs.stringify(obj, { encode: false }), 'a[b][c]=d&a[b][e]=f', 'no array, no arrayFormat'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'brackets' }), 'a[b][c]=d&a[b][e]=f', 'no array, bracket'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'indices' }), 'a[b][c]=d&a[b][e]=f', 'no array, indices'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'no array, repeat'); - st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'comma' }), 'a[b][c]=d&a[b][e]=f', 'no array, comma'); - - st.equal(qs.stringify(withArray, { encode: false }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, no arrayFormat'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'brackets' }), 'a[b][][c]=d&a[b][][e]=f', 'array, bracket'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'indices' }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, indices'); - st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'array, repeat'); - st.equal( - qs.stringify(withArray, { encode: false, arrayFormat: 'comma' }), - '???', - 'array, comma', - { skip: 'TODO: figure out what this should do' } - ); - - st.end(); - }); - - t.test('stringifies sparse arrays', function (st) { - /* eslint no-sparse-arrays: 0 */ - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1]=2&a[4]=1'); - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=2&a[]=1'); - st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=2&a=1'); - - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][b][2][c]=1'); - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][b][][c]=1'); - st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[b][c]=1'); - - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); - - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c][1]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c][]=1'); - st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); - - st.end(); - }); - - t.test('encodes a very long string', function (st) { - var chars = []; - var expected = []; - for (var i = 0; i < 5e3; i++) { - chars.push(' ' + i); - - expected.push('%20' + i); - } - - var obj = { - foo: chars.join('') - }; - - st.equal( - qs.stringify(obj, { arrayFormat: 'brackets', charset: 'utf-8' }), - 'foo=' + expected.join('') - ); - - st.end(); - }); - - t.end(); -}); - -test('stringifies empty keys', function (t) { - emptyTestCases.forEach(function (testCase) { - t.test('stringifies an object with empty string key with ' + testCase.input, function (st) { - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'indices' }), - testCase.stringifyOutput.indices, - 'test case: ' + testCase.input + ', indices' - ); - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'brackets' }), - testCase.stringifyOutput.brackets, - 'test case: ' + testCase.input + ', brackets' - ); - st.deepEqual( - qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'repeat' }), - testCase.stringifyOutput.repeat, - 'test case: ' + testCase.input + ', repeat' - ); - - st.end(); - }); - }); - - t.test('edge case with object/arrays', function (st) { - st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false }), '[][0]=2&[][1]=3'); - st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false }), '[][0]=2&[][1]=3&[a]=2'); - st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3'); - st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3&[a]=2'); - - st.end(); - }); - - t.test('stringifies non-string keys', function (st) { - var actual = qs.stringify({ a: 'b', 'false': {} }, { - filter: ['a', false, null], - allowDots: true, - encodeDotInKeys: true - }); - - st.equal(actual, 'a=b', 'stringifies correctly'); - - st.end(); - }); -}); diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/utils.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/utils.js deleted file mode 100644 index 3933516..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/qs/test/utils.js +++ /dev/null @@ -1,262 +0,0 @@ -'use strict'; - -var test = require('tape'); -var inspect = require('object-inspect'); -var SaferBuffer = require('safer-buffer').Buffer; -var forEach = require('for-each'); -var v = require('es-value-fixtures'); - -var utils = require('../lib/utils'); - -test('merge()', function (t) { - t.deepEqual(utils.merge(null, true), [null, true], 'merges true into null'); - - t.deepEqual(utils.merge(null, [42]), [null, 42], 'merges null into an array'); - - t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key'); - - var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } }); - t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array'); - - var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } }); - t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array'); - - var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' }); - t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array'); - - var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] }); - t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] }); - - var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar'); - t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true }); - - var func = function f() {}; - t.deepEqual( - utils.merge(func, { foo: 'bar' }), - [func, { foo: 'bar' }], - 'functions can not be merged into' - ); - - func.bar = 'baz'; - t.deepEqual( - utils.merge({ foo: 'bar' }, func), - { foo: 'bar', bar: 'baz' }, - 'functions can be merge sources' - ); - - t.test( - 'avoids invoking array setters unnecessarily', - { skip: typeof Object.defineProperty !== 'function' }, - function (st) { - var setCount = 0; - var getCount = 0; - var observed = []; - Object.defineProperty(observed, 0, { - get: function () { - getCount += 1; - return { bar: 'baz' }; - }, - set: function () { setCount += 1; } - }); - utils.merge(observed, [null]); - st.equal(setCount, 0); - st.equal(getCount, 1); - observed[0] = observed[0]; // eslint-disable-line no-self-assign - st.equal(setCount, 1); - st.equal(getCount, 2); - st.end(); - } - ); - - t.end(); -}); - -test('assign()', function (t) { - var target = { a: 1, b: 2 }; - var source = { b: 3, c: 4 }; - var result = utils.assign(target, source); - - t.equal(result, target, 'returns the target'); - t.deepEqual(target, { a: 1, b: 3, c: 4 }, 'target and source are merged'); - t.deepEqual(source, { b: 3, c: 4 }, 'source is untouched'); - - t.end(); -}); - -test('combine()', function (t) { - t.test('both arrays', function (st) { - var a = [1]; - var b = [2]; - var combined = utils.combine(a, b); - - st.deepEqual(a, [1], 'a is not mutated'); - st.deepEqual(b, [2], 'b is not mutated'); - st.notEqual(a, combined, 'a !== combined'); - st.notEqual(b, combined, 'b !== combined'); - st.deepEqual(combined, [1, 2], 'combined is a + b'); - - st.end(); - }); - - t.test('one array, one non-array', function (st) { - var aN = 1; - var a = [aN]; - var bN = 2; - var b = [bN]; - - var combinedAnB = utils.combine(aN, b); - st.deepEqual(b, [bN], 'b is not mutated'); - st.notEqual(aN, combinedAnB, 'aN + b !== aN'); - st.notEqual(a, combinedAnB, 'aN + b !== a'); - st.notEqual(bN, combinedAnB, 'aN + b !== bN'); - st.notEqual(b, combinedAnB, 'aN + b !== b'); - st.deepEqual([1, 2], combinedAnB, 'first argument is array-wrapped when not an array'); - - var combinedABn = utils.combine(a, bN); - st.deepEqual(a, [aN], 'a is not mutated'); - st.notEqual(aN, combinedABn, 'a + bN !== aN'); - st.notEqual(a, combinedABn, 'a + bN !== a'); - st.notEqual(bN, combinedABn, 'a + bN !== bN'); - st.notEqual(b, combinedABn, 'a + bN !== b'); - st.deepEqual([1, 2], combinedABn, 'second argument is array-wrapped when not an array'); - - st.end(); - }); - - t.test('neither is an array', function (st) { - var combined = utils.combine(1, 2); - st.notEqual(1, combined, '1 + 2 !== 1'); - st.notEqual(2, combined, '1 + 2 !== 2'); - st.deepEqual([1, 2], combined, 'both arguments are array-wrapped when not an array'); - - st.end(); - }); - - t.end(); -}); - -test('decode', function (t) { - t.equal( - utils.decode('a+b'), - 'a b', - 'decodes + to space' - ); - - t.equal( - utils.decode('name%2Eobj'), - 'name.obj', - 'decodes a string' - ); - t.equal( - utils.decode('name%2Eobj%2Efoo', null, 'iso-8859-1'), - 'name.obj.foo', - 'decodes a string in iso-8859-1' - ); - - t.end(); -}); - -test('encode', function (t) { - forEach(v.nullPrimitives, function (nullish) { - t['throws']( - function () { utils.encode(nullish); }, - TypeError, - inspect(nullish) + ' is not a string' - ); - }); - - t.equal(utils.encode(''), '', 'empty string returns itself'); - t.deepEqual(utils.encode([]), [], 'empty array returns itself'); - t.deepEqual(utils.encode({ length: 0 }), { length: 0 }, 'empty arraylike returns itself'); - - t.test('symbols', { skip: !v.hasSymbols }, function (st) { - st.equal(utils.encode(Symbol('x')), 'Symbol%28x%29', 'symbol is encoded'); - - st.end(); - }); - - t.equal( - utils.encode('(abc)'), - '%28abc%29', - 'encodes parentheses' - ); - t.equal( - utils.encode({ toString: function () { return '(abc)'; } }), - '%28abc%29', - 'toStrings and encodes parentheses' - ); - - t.equal( - utils.encode('abc 123 đŸ’©', null, 'iso-8859-1'), - 'abc%20123%20%26%2355357%3B%26%2356489%3B', - 'encodes in iso-8859-1' - ); - - var longString = ''; - var expectedString = ''; - for (var i = 0; i < 1500; i++) { - longString += ' '; - expectedString += '%20'; - } - - t.equal( - utils.encode(longString), - expectedString, - 'encodes a long string' - ); - - t.equal( - utils.encode('\x28\x29'), - '%28%29', - 'encodes parens normally' - ); - t.equal( - utils.encode('\x28\x29', null, null, null, 'RFC1738'), - '()', - 'does not encode parens in RFC1738' - ); - - // todo RFC1738 format - - t.equal( - utils.encode('Āက'), - '%C4%80%E1%80%80%EF%A4%80', - 'encodes multibyte chars' - ); - - t.equal( - utils.encode('\uD83D \uDCA9'), - '%F0%9F%90%A0%F0%BA%90%80', - 'encodes lone surrogates' - ); - - t.end(); -}); - -test('isBuffer()', function (t) { - forEach([null, undefined, true, false, '', 'abc', 42, 0, NaN, {}, [], function () {}, /a/g], function (x) { - t.equal(utils.isBuffer(x), false, inspect(x) + ' is not a buffer'); - }); - - var fakeBuffer = { constructor: Buffer }; - t.equal(utils.isBuffer(fakeBuffer), false, 'fake buffer is not a buffer'); - - var saferBuffer = SaferBuffer.from('abc'); - t.equal(utils.isBuffer(saferBuffer), true, 'SaferBuffer instance is a buffer'); - - var buffer = Buffer.from && Buffer.alloc ? Buffer.from('abc') : new Buffer('abc'); - t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer'); - t.end(); -}); - -test('isRegExp()', function (t) { - t.equal(utils.isRegExp(/a/g), true, 'RegExp is a RegExp'); - t.equal(utils.isRegExp(new RegExp('a', 'g')), true, 'new RegExp is a RegExp'); - t.equal(utils.isRegExp(new Date()), false, 'Date is not a RegExp'); - - forEach(v.primitives, function (primitive) { - t.equal(utils.isRegExp(primitive), false, inspect(primitive) + ' is not a RegExp'); - }); - - t.end(); -}); diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/HISTORY.md deleted file mode 100644 index 958b934..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/HISTORY.md +++ /dev/null @@ -1,580 +0,0 @@ -1.2.0 / 2025-03-27 -================== - - * deps: - * `mime-types@^3.0.1` - * `fresh@^2.0.0` - * removed `destroy` - * remove `getHeaderNames()` polyfill and refactor `clearHeaders()` - -1.1.0 / 2024-09-10 -================== - -* Changes from 0.19.0 - -1.0.0 / 2024-07-25 -================== - - * Drop support for Node.js <18.0 - * `statuses@^2.0.1` - * `range-parser@^1.2.1` - * `on-finished@^2.4.1` - * `ms@^2.1.3` - * `mime-types@^2.1.35` - * `http-errors@^2.0.0` - * `fresh@^0.5.2` - * `etag@^1.8.1` - * `escape-html@^1.0.3` - * `encodeurl@^2.0.0` - * `destroy@^1.2.0` - * `debug@^4.3.5` - -1.0.0-beta.2 / 2024-03-04 -========================= - - * Changes from 0.18.0 - -1.0.0-beta.1 / 2022-02-04 -========================= - - * Drop support for Node.js 0.8 - * Remove `hidden` option -- use `dotfiles` option - * Remove `from` alias to `root` -- use `root` directly - * Remove `send.etag()` -- use `etag` in `options` - * Remove `send.index()` -- use `index` in `options` - * Remove `send.maxage()` -- use `maxAge` in `options` - * Remove `send.root()` -- use `root` in `options` - * Use `mime-types` for file to content type mapping -- removed `send.mime` - * deps: debug@3.1.0 - - Add `DEBUG_HIDE_DATE` environment variable - - Change timer to per-namespace instead of global - - Change non-TTY date format - - Remove `DEBUG_FD` environment variable support - - Support 256 namespace colors - -0.19.0 / 2024-09-10 -=================== - -* Remove link renderization in html while redirecting - -0.18.0 / 2022-03-23 -=================== - - * Fix emitted 416 error missing headers property - * Limit the headers removed for 304 response - * deps: depd@2.0.0 - - Replace internal `eval` usage with `Function` constructor - - Use instance methods on `process` to check for listeners - * deps: destroy@1.2.0 - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - * deps: on-finished@2.4.1 - * deps: statuses@2.0.1 - -0.17.2 / 2021-12-11 -=================== - - * pref: ignore empty http tokens - * deps: http-errors@1.8.1 - - deps: inherits@2.0.4 - - deps: toidentifier@1.0.1 - - deps: setprototypeof@1.2.0 - * deps: ms@2.1.3 - -0.17.1 / 2019-05-10 -=================== - - * Set stricter CSP header in redirect & error responses - * deps: range-parser@~1.2.1 - -0.17.0 / 2019-05-03 -=================== - - * deps: http-errors@~1.7.2 - - Set constructor name when possible - - Use `toidentifier` module to make class names - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: mime@1.6.0 - - Add extensions for JPEG-2000 images - - Add new `font/*` types from IANA - - Add WASM mapping - - Update `.bdoc` to `application/bdoc` - - Update `.bmp` to `image/bmp` - - Update `.m4a` to `audio/mp4` - - Update `.rtf` to `application/rtf` - - Update `.wav` to `audio/wav` - - Update `.xml` to `application/xml` - - Update generic extensions to `application/octet-stream`: - `.deb`, `.dll`, `.dmg`, `.exe`, `.iso`, `.msi` - - Use mime-score module to resolve extension conflicts - * deps: ms@2.1.1 - - Add `week`/`w` support - - Fix negative number handling - * deps: statuses@~1.5.0 - * perf: remove redundant `path.normalize` call - -0.16.2 / 2018-02-07 -=================== - - * Fix incorrect end tag in default error & redirects - * deps: depd@~1.1.2 - - perf: remove argument reassignment - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: statuses@~1.4.0 - -0.16.1 / 2017-09-29 -=================== - - * Fix regression in edge-case behavior for empty `path` - -0.16.0 / 2017-09-27 -=================== - - * Add `immutable` option - * Fix missing `` in default error & redirects - * Use instance methods on steam to check for listeners - * deps: mime@1.4.1 - - Add 70 new types for file extensions - - Set charset as "UTF-8" for .js and .json - * perf: improve path validation speed - -0.15.6 / 2017-09-22 -=================== - - * deps: debug@2.6.9 - * perf: improve `If-Match` token parsing - -0.15.5 / 2017-09-20 -=================== - - * deps: etag@~1.8.1 - - perf: replace regular expression with substring - * deps: fresh@0.5.2 - - Fix handling of modified headers with invalid dates - - perf: improve ETag match loop - - perf: improve `If-None-Match` token parsing - -0.15.4 / 2017-08-05 -=================== - - * deps: debug@2.6.8 - * deps: depd@~1.1.1 - - Remove unnecessary `Buffer` loading - * deps: http-errors@~1.6.2 - - deps: depd@1.1.1 - -0.15.3 / 2017-05-16 -=================== - - * deps: debug@2.6.7 - - deps: ms@2.0.0 - * deps: ms@2.0.0 - -0.15.2 / 2017-04-26 -=================== - - * deps: debug@2.6.4 - - Fix `DEBUG_MAX_ARRAY_LENGTH` - - deps: ms@0.7.3 - * deps: ms@1.0.0 - -0.15.1 / 2017-03-04 -=================== - - * Fix issue when `Date.parse` does not return `NaN` on invalid date - * Fix strict violation in broken environments - -0.15.0 / 2017-02-25 -=================== - - * Support `If-Match` and `If-Unmodified-Since` headers - * Add `res` and `path` arguments to `directory` event - * Remove usage of `res._headers` private field - - Improves compatibility with Node.js 8 nightly - * Send complete HTML document in redirect & error responses - * Set default CSP header in redirect & error responses - * Use `res.getHeaderNames()` when available - * Use `res.headersSent` when available - * deps: debug@2.6.1 - - Allow colors in workers - - Deprecated `DEBUG_FD` environment variable set to `3` or higher - - Fix error when running under React Native - - Use same color for same namespace - - deps: ms@0.7.2 - * deps: etag@~1.8.0 - * deps: fresh@0.5.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - perf: delay reading header values until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove duplicate conditional - - perf: remove unnecessary boolean coercions - - perf: skip checking modified time if ETag check failed - - perf: skip parsing `If-None-Match` when no `ETag` header - - perf: use `Date.parse` instead of `new Date` - * deps: http-errors@~1.6.1 - - Make `message` property enumerable for `HttpError`s - - deps: setprototypeof@1.0.3 - -0.14.2 / 2017-01-23 -=================== - - * deps: http-errors@~1.5.1 - - deps: inherits@2.0.3 - - deps: setprototypeof@1.0.2 - - deps: statuses@'>= 1.3.1 < 2' - * deps: ms@0.7.2 - * deps: statuses@~1.3.1 - -0.14.1 / 2016-06-09 -=================== - - * Fix redirect error when `path` contains raw non-URL characters - * Fix redirect when `path` starts with multiple forward slashes - -0.14.0 / 2016-06-06 -=================== - - * Add `acceptRanges` option - * Add `cacheControl` option - * Attempt to combine multiple ranges into single range - * Correctly inherit from `Stream` class - * Fix `Content-Range` header in 416 responses when using `start`/`end` options - * Fix `Content-Range` header missing from default 416 responses - * Ignore non-byte `Range` headers - * deps: http-errors@~1.5.0 - - Add `HttpError` export, for `err instanceof createError.HttpError` - - Support new code `421 Misdirected Request` - - Use `setprototypeof` module to replace `__proto__` setting - - deps: inherits@2.0.1 - - deps: statuses@'>= 1.3.0 < 2' - - perf: enable strict mode - * deps: range-parser@~1.2.0 - - Fix incorrectly returning -1 when there is at least one valid range - - perf: remove internal function - * deps: statuses@~1.3.0 - - Add `421 Misdirected Request` - - perf: enable strict mode - * perf: remove argument reassignment - -0.13.2 / 2016-03-05 -=================== - - * Fix invalid `Content-Type` header when `send.mime.default_type` unset - -0.13.1 / 2016-01-16 -=================== - - * deps: depd@~1.1.0 - - Support web browser loading - - perf: enable strict mode - * deps: destroy@~1.0.4 - - perf: enable strict mode - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - * deps: range-parser@~1.0.3 - - perf: enable strict mode - -0.13.0 / 2015-06-16 -=================== - - * Allow Node.js HTTP server to set `Date` response header - * Fix incorrectly removing `Content-Location` on 304 response - * Improve the default redirect response headers - * Send appropriate headers on default error response - * Use `http-errors` for standard emitted errors - * Use `statuses` instead of `http` module for status messages - * deps: escape-html@1.0.2 - * deps: etag@~1.7.0 - - Improve stat performance by removing hashing - * deps: fresh@0.3.0 - - Add weak `ETag` matching support - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * perf: enable strict mode - * perf: remove unnecessary array allocations - -0.12.3 / 2015-05-13 -=================== - - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - * deps: depd@~1.0.1 - * deps: etag@~1.6.0 - - Improve support for JXcore - - Support "fake" stats objects in environments without `fs` - * deps: ms@0.7.1 - - Prevent extraordinarily long inputs - * deps: on-finished@~2.2.1 - -0.12.2 / 2015-03-13 -=================== - - * Throw errors early for invalid `extensions` or `index` options - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - -0.12.1 / 2015-02-17 -=================== - - * Fix regression sending zero-length files - -0.12.0 / 2015-02-16 -=================== - - * Always read the stat size from the file - * Fix mutating passed-in `options` - * deps: mime@1.3.4 - -0.11.1 / 2015-01-20 -=================== - - * Fix `root` path disclosure - -0.11.0 / 2015-01-05 -=================== - - * deps: debug@~2.1.1 - * deps: etag@~1.5.1 - - deps: crc@3.2.1 - * deps: ms@0.7.0 - - Add `milliseconds` - - Add `msecs` - - Add `secs` - - Add `mins` - - Add `hrs` - - Add `yrs` - * deps: on-finished@~2.2.0 - -0.10.1 / 2014-10-22 -=================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.10.0 / 2014-10-15 -=================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - -0.9.3 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - - Support "fake" stats objects - -0.9.2 / 2014-09-15 -================== - - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: range-parser@~1.0.2 - -0.9.1 / 2014-09-07 -================== - - * deps: fresh@0.2.4 - -0.9.0 / 2014-09-07 -================== - - * Add `lastModified` option - * Use `etag` to generate `ETag` header - * deps: debug@~2.0.0 - -0.8.5 / 2014-09-04 -================== - - * Fix malicious path detection for empty string path - -0.8.4 / 2014-09-04 -================== - - * Fix a path traversal issue when using `root` - -0.8.3 / 2014-08-16 -================== - - * deps: destroy@1.0.3 - - renamed from dethroy - * deps: on-finished@2.1.0 - -0.8.2 / 2014-08-14 -================== - - * Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: dethroy@1.0.2 - -0.8.1 / 2014-08-05 -================== - - * Fix `extensions` behavior when file already has extension - -0.8.0 / 2014-08-05 -================== - - * Add `extensions` option - -0.7.4 / 2014-08-04 -================== - - * Fix serving index files without root dir - -0.7.3 / 2014-07-29 -================== - - * Fix incorrect 403 on Windows and Node.js 0.11 - -0.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - -0.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - -0.7.0 / 2014-07-20 -================== - - * Deprecate `hidden` option; use `dotfiles` option - * Add `dotfiles` option - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - -0.6.0 / 2014-07-11 -================== - - * Deprecate `from` option; use `root` option - * Deprecate `send.etag()` -- use `etag` in `options` - * Deprecate `send.hidden()` -- use `hidden` in `options` - * Deprecate `send.index()` -- use `index` in `options` - * Deprecate `send.maxage()` -- use `maxAge` in `options` - * Deprecate `send.root()` -- use `root` in `options` - * Cap `maxAge` value to 1 year - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.5.0 / 2014-06-28 -================== - - * Accept string for `maxAge` (converted by `ms`) - * Add `headers` event - * Include link in default redirect response - * Use `EventEmitter.listenerCount` to count listeners - -0.4.3 / 2014-06-11 -================== - - * Do not throw un-catchable error on file open race condition - * Use `escape-html` for HTML escaping - * deps: debug@1.0.2 - - fix some debugging output colors on node.js 0.8 - * deps: finished@1.2.2 - * deps: fresh@0.2.2 - -0.4.2 / 2014-06-09 -================== - - * fix "event emitter leak" warnings - * deps: debug@1.0.1 - * deps: finished@1.2.1 - -0.4.1 / 2014-06-02 -================== - - * Send `max-age` in `Cache-Control` in correct format - -0.4.0 / 2014-05-27 -================== - - * Calculate ETag with md5 for reduced collisions - * Fix wrong behavior when index file matches directory - * Ignore stream errors after request ends - - Goodbye `EBADF, read` - * Skip directories in index file search - * deps: debug@0.8.1 - -0.3.0 / 2014-04-24 -================== - - * Fix sending files with dots without root set - * Coerce option types - * Accept API options in options object - * Set etags to "weak" - * Include file path in etag - * Make "Can't set headers after they are sent." catchable - * Send full entity-body for multi range requests - * Default directory access to 403 when index disabled - * Support multiple index paths - * Support "If-Range" header - * Control whether to generate etags - * deps: mime@1.2.11 - -0.2.0 / 2014-01-29 -================== - - * update range-parser and fresh - -0.1.4 / 2013-08-11 -================== - - * update fresh - -0.1.3 / 2013-07-08 -================== - - * Revert "Fix fd leak" - -0.1.2 / 2013-07-03 -================== - - * Fix fd leak - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/LICENSE deleted file mode 100644 index b6ea1c1..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk -Copyright (c) 2014-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/README.md deleted file mode 100644 index 350fccd..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/README.md +++ /dev/null @@ -1,317 +0,0 @@ -# send - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![CI][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Send is a library for streaming files from the file system as a http response -supporting partial responses (Ranges), conditional-GET negotiation (If-Match, -If-Unmodified-Since, If-None-Match, If-Modified-Since), high test coverage, -and granular events which may be leveraged to take appropriate actions in your -application or framework. - -Looking to serve up entire folders mapped to URLs? Try [serve-static](https://www.npmjs.org/package/serve-static). - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -$ npm install send -``` - -## API - -```js -var send = require('send') -``` - -### send(req, path, [options]) - -Create a new `SendStream` for the given path to send to a `res`. The `req` is -the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded, -not the actual file-system path). - -#### Options - -##### acceptRanges - -Enable or disable accepting ranged requests, defaults to true. -Disabling this will not send `Accept-Ranges` and ignore the contents -of the `Range` request header. - -##### cacheControl - -Enable or disable setting `Cache-Control` response header, defaults to -true. Disabling this will ignore the `immutable` and `maxAge` options. - -##### dotfiles - -Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when set -to "deny"). - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Send a 403 for any request for a dotfile. - - `'ignore'` Pretend like the dotfile does not exist and 404. - -The default value is _similar_ to `'ignore'`, with the exception that -this default will not ignore the files within a directory that begins -with a dot, for backward-compatibility. - -##### end - -Byte offset at which the stream ends, defaults to the length of the file -minus 1. The end is inclusive in the stream, meaning `end: 3` will include -the 4th byte in the stream. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -If a given file doesn't exist, try appending one of the given extensions, -in the given order. By default, this is disabled (set to `false`). An -example value that will serve extension-less HTML files: `['html', 'htm']`. -This is skipped if the requested file already has an extension. - -##### immutable - -Enable or disable the `immutable` directive in the `Cache-Control` response -header, defaults to `false`. If set to `true`, the `maxAge` option should -also be specified to enable caching. The `immutable` directive will prevent -supported clients from making conditional requests during the life of the -`maxAge` option to check if the file has changed. - -##### index - -By default send supports "index.html" files, to disable this -set `false` or to supply a new index pass a string or an array -in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. -This can also be a string accepted by the -[ms](https://www.npmjs.org/package/ms#readme) module. - -##### root - -Serve files relative to `path`. - -##### start - -Byte offset at which the stream starts, defaults to 0. The start is inclusive, -meaning `start: 2` will include the 3rd byte in the stream. - -#### Events - -The `SendStream` is an event emitter and will emit the following events: - - - `error` an error occurred `(err)` - - `directory` a directory was requested `(res, path)` - - `file` a file was requested `(path, stat)` - - `headers` the headers are about to be set on a file `(res, path, stat)` - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -#### .pipe - -The `pipe` method is used to pipe the response into the Node.js HTTP response -object, typically `send(req, path, options).pipe(res)`. - -## Error-handling - -By default when no `error` listeners are present an automatic response will be -made, otherwise you have full control over the response, aka you may show a 5xx -page etc. - -## Caching - -It does _not_ perform internal caching, you should use a reverse proxy cache -such as Varnish for this, or those fancy things called CDNs. If your -application is small enough that it would benefit from single-node memory -caching, it's small enough that it does not need caching at all ;). - -## Debugging - -To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ npm test -``` - -## Examples - -### Serve a specific file - -This simple example will send a specific file to all requests. - -```js -var http = require('http') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - send(req, '/path/to/index.html') - .pipe(res) -}) - -server.listen(3000) -``` - -### Serve all files from a directory - -This simple example will just serve up all the files in a -given directory as the top-level. For example, a request -`GET /foo.txt` will send back `/www/public/foo.txt`. - -```js -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .pipe(res) -}) - -server.listen(3000) -``` - -### Custom file types - -```js -var extname = require('path').extname -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .on('headers', function (res, path) { - switch (extname(path)) { - case '.x-mt': - case '.x-mtt': - // custom type for these extensions - res.setHeader('Content-Type', 'application/x-my-type') - break - } - }) - .pipe(res) -}) - -server.listen(3000) -``` - -### Custom directory index view - -This is an example of serving up a structure of directories with a -custom function to render a listing of a directory. - -```js -var http = require('http') -var fs = require('fs') -var parseUrl = require('parseurl') -var send = require('send') - -// Transfer arbitrary files from within /www/example.com/public/* -// with a custom handler for directory listing -var server = http.createServer(function onRequest (req, res) { - send(req, parseUrl(req).pathname, { index: false, root: '/www/public' }) - .once('directory', directory) - .pipe(res) -}) - -server.listen(3000) - -// Custom directory handler -function directory (res, path) { - var stream = this - - // redirect to trailing slash for consistent url - if (!stream.hasTrailingSlash()) { - return stream.redirect(path) - } - - // get directory list - fs.readdir(path, function onReaddir (err, list) { - if (err) return stream.error(err) - - // render an index for the directory - res.setHeader('Content-Type', 'text/plain; charset=UTF-8') - res.end(list.join('\n') + '\n') - }) -} -``` - -### Serving from a root directory with custom error-handling - -```js -var http = require('http') -var parseUrl = require('parseurl') -var send = require('send') - -var server = http.createServer(function onRequest (req, res) { - // your custom error-handling logic: - function error (err) { - res.statusCode = err.status || 500 - res.end(err.message) - } - - // your custom headers - function headers (res, path, stat) { - // serve all files for download - res.setHeader('Content-Disposition', 'attachment') - } - - // your custom directory handling logic: - function redirect () { - res.statusCode = 301 - res.setHeader('Location', req.url + '/') - res.end('Redirecting to ' + req.url + '/') - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, parseUrl(req).pathname, { root: '/www/public' }) - .on('error', error) - .on('directory', redirect) - .on('headers', headers) - .pipe(res) -}) - -server.listen(3000) -``` - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master -[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux -[github-actions-ci-url]: https://github.com/pillarjs/send/actions/workflows/ci.yml -[node-image]: https://badgen.net/npm/node/send -[node-url]: https://nodejs.org/en/download/ -[npm-downloads-image]: https://badgen.net/npm/dm/send -[npm-url]: https://npmjs.org/package/send -[npm-version-image]: https://badgen.net/npm/v/send diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/index.js deleted file mode 100644 index 1655053..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/index.js +++ /dev/null @@ -1,997 +0,0 @@ -/*! - * send - * Copyright(c) 2012 TJ Holowaychuk - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var createError = require('http-errors') -var debug = require('debug')('send') -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var etag = require('etag') -var fresh = require('fresh') -var fs = require('fs') -var mime = require('mime-types') -var ms = require('ms') -var onFinished = require('on-finished') -var parseRange = require('range-parser') -var path = require('path') -var statuses = require('statuses') -var Stream = require('stream') -var util = require('util') - -/** - * Path function references. - * @private - */ - -var extname = path.extname -var join = path.join -var normalize = path.normalize -var resolve = path.resolve -var sep = path.sep - -/** - * Regular expression for identifying a bytes Range header. - * @private - */ - -var BYTES_RANGE_REGEXP = /^ *bytes=/ - -/** - * Maximum value allowed for the max age. - * @private - */ - -var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year - -/** - * Regular expression to match a path with a directory up component. - * @private - */ - -var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/ - -/** - * Module exports. - * @public - */ - -module.exports = send - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {object} req - * @param {string} path - * @param {object} [options] - * @return {SendStream} - * @public - */ - -function send (req, path, options) { - return new SendStream(req, path, options) -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * @param {Request} req - * @param {String} path - * @param {object} [options] - * @private - */ - -function SendStream (req, path, options) { - Stream.call(this) - - var opts = options || {} - - this.options = opts - this.path = path - this.req = req - - this._acceptRanges = opts.acceptRanges !== undefined - ? Boolean(opts.acceptRanges) - : true - - this._cacheControl = opts.cacheControl !== undefined - ? Boolean(opts.cacheControl) - : true - - this._etag = opts.etag !== undefined - ? Boolean(opts.etag) - : true - - this._dotfiles = opts.dotfiles !== undefined - ? opts.dotfiles - : 'ignore' - - if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') { - throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"') - } - - this._extensions = opts.extensions !== undefined - ? normalizeList(opts.extensions, 'extensions option') - : [] - - this._immutable = opts.immutable !== undefined - ? Boolean(opts.immutable) - : false - - this._index = opts.index !== undefined - ? normalizeList(opts.index, 'index option') - : ['index.html'] - - this._lastModified = opts.lastModified !== undefined - ? Boolean(opts.lastModified) - : true - - this._maxage = opts.maxAge || opts.maxage - this._maxage = typeof this._maxage === 'string' - ? ms(this._maxage) - : Number(this._maxage) - this._maxage = !isNaN(this._maxage) - ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) - : 0 - - this._root = opts.root - ? resolve(opts.root) - : null -} - -/** - * Inherits from `Stream`. - */ - -util.inherits(SendStream, Stream) - -/** - * Emit error with `status`. - * - * @param {number} status - * @param {Error} [err] - * @private - */ - -SendStream.prototype.error = function error (status, err) { - // emit if listeners instead of responding - if (hasListeners(this, 'error')) { - return this.emit('error', createHttpError(status, err)) - } - - var res = this.res - var msg = statuses.message[status] || String(status) - var doc = createHtmlDocument('Error', escapeHtml(msg)) - - // clear existing headers - clearHeaders(res) - - // add error headers - if (err && err.headers) { - setHeaders(res, err.headers) - } - - // send basic response - res.statusCode = status - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.end(doc) -} - -/** - * Check if the pathname ends with "/". - * - * @return {boolean} - * @private - */ - -SendStream.prototype.hasTrailingSlash = function hasTrailingSlash () { - return this.path[this.path.length - 1] === '/' -} - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function isConditionalGET () { - return this.req.headers['if-match'] || - this.req.headers['if-unmodified-since'] || - this.req.headers['if-none-match'] || - this.req.headers['if-modified-since'] -} - -/** - * Check if the request preconditions failed. - * - * @return {boolean} - * @private - */ - -SendStream.prototype.isPreconditionFailure = function isPreconditionFailure () { - var req = this.req - var res = this.res - - // if-match - var match = req.headers['if-match'] - if (match) { - var etag = res.getHeader('ETag') - return !etag || (match !== '*' && parseTokenList(match).every(function (match) { - return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag - })) - } - - // if-unmodified-since - var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since']) - if (!isNaN(unmodifiedSince)) { - var lastModified = parseHttpDate(res.getHeader('Last-Modified')) - return isNaN(lastModified) || lastModified > unmodifiedSince - } - - return false -} - -/** - * Strip various content header fields for a change in entity. - * - * @private - */ - -SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () { - var res = this.res - - res.removeHeader('Content-Encoding') - res.removeHeader('Content-Language') - res.removeHeader('Content-Length') - res.removeHeader('Content-Range') - res.removeHeader('Content-Type') -} - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function notModified () { - var res = this.res - debug('not modified') - this.removeContentHeaderFields() - res.statusCode = 304 - res.end() -} - -/** - * Raise error that headers already sent. - * - * @api private - */ - -SendStream.prototype.headersAlreadySent = function headersAlreadySent () { - var err = new Error('Can\'t set headers after they are sent.') - debug('headers already sent') - this.error(500, err) -} - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function isCachable () { - var statusCode = this.res.statusCode - return (statusCode >= 200 && statusCode < 300) || - statusCode === 304 -} - -/** - * Handle stat() error. - * - * @param {Error} error - * @private - */ - -SendStream.prototype.onStatError = function onStatError (error) { - switch (error.code) { - case 'ENAMETOOLONG': - case 'ENOENT': - case 'ENOTDIR': - this.error(404, error) - break - default: - this.error(500, error) - break - } -} - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function isFresh () { - return fresh(this.req.headers, { - etag: this.res.getHeader('ETag'), - 'last-modified': this.res.getHeader('Last-Modified') - }) -} - -/** - * Check if the range is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isRangeFresh = function isRangeFresh () { - var ifRange = this.req.headers['if-range'] - - if (!ifRange) { - return true - } - - // if-range as etag - if (ifRange.indexOf('"') !== -1) { - var etag = this.res.getHeader('ETag') - return Boolean(etag && ifRange.indexOf(etag) !== -1) - } - - // if-range as modified date - var lastModified = this.res.getHeader('Last-Modified') - return parseHttpDate(lastModified) <= parseHttpDate(ifRange) -} - -/** - * Redirect to path. - * - * @param {string} path - * @private - */ - -SendStream.prototype.redirect = function redirect (path) { - var res = this.res - - if (hasListeners(this, 'directory')) { - this.emit('directory', res, path) - return - } - - if (this.hasTrailingSlash()) { - this.error(403) - return - } - - var loc = encodeUrl(collapseLeadingSlashes(this.path + '/')) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) - - // redirect - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.setHeader('Location', loc) - res.end(doc) -} - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function pipe (res) { - // root path - var root = this._root - - // references - this.res = res - - // decode the path - var path = decode(this.path) - if (path === -1) { - this.error(400) - return res - } - - // null byte(s) - if (~path.indexOf('\0')) { - this.error(400) - return res - } - - var parts - if (root !== null) { - // normalize - if (path) { - path = normalize('.' + sep + path) - } - - // malicious path - if (UP_PATH_REGEXP.test(path)) { - debug('malicious path "%s"', path) - this.error(403) - return res - } - - // explode path parts - parts = path.split(sep) - - // join / normalize from optional root dir - path = normalize(join(root, path)) - } else { - // ".." is malicious without "root" - if (UP_PATH_REGEXP.test(path)) { - debug('malicious path "%s"', path) - this.error(403) - return res - } - - // explode path parts - parts = normalize(path).split(sep) - - // resolve the path - path = resolve(path) - } - - // dotfile handling - if (containsDotFile(parts)) { - debug('%s dotfile "%s"', this._dotfiles, path) - switch (this._dotfiles) { - case 'allow': - break - case 'deny': - this.error(403) - return res - case 'ignore': - default: - this.error(404) - return res - } - } - - // index file support - if (this._index.length && this.hasTrailingSlash()) { - this.sendIndex(path) - return res - } - - this.sendFile(path) - return res -} - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function send (path, stat) { - var len = stat.size - var options = this.options - var opts = {} - var res = this.res - var req = this.req - var ranges = req.headers.range - var offset = options.start || 0 - - if (res.headersSent) { - // impossible to send now - this.headersAlreadySent() - return - } - - debug('pipe "%s"', path) - - // set header fields - this.setHeader(path, stat) - - // set content-type - this.type(path) - - // conditional GET support - if (this.isConditionalGET()) { - if (this.isPreconditionFailure()) { - this.error(412) - return - } - - if (this.isCachable() && this.isFresh()) { - this.notModified() - return - } - } - - // adjust len to start/end options - len = Math.max(0, len - offset) - if (options.end !== undefined) { - var bytes = options.end - offset + 1 - if (len > bytes) len = bytes - } - - // Range support - if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { - // parse - ranges = parseRange(len, ranges, { - combine: true - }) - - // If-Range support - if (!this.isRangeFresh()) { - debug('range stale') - ranges = -2 - } - - // unsatisfiable - if (ranges === -1) { - debug('range unsatisfiable') - - // Content-Range - res.setHeader('Content-Range', contentRange('bytes', len)) - - // 416 Requested Range Not Satisfiable - return this.error(416, { - headers: { 'Content-Range': res.getHeader('Content-Range') } - }) - } - - // valid (syntactically invalid/multiple ranges are treated as a regular response) - if (ranges !== -2 && ranges.length === 1) { - debug('range %j', ranges) - - // Content-Range - res.statusCode = 206 - res.setHeader('Content-Range', contentRange('bytes', len, ranges[0])) - - // adjust for requested range - offset += ranges[0].start - len = ranges[0].end - ranges[0].start + 1 - } - } - - // clone options - for (var prop in options) { - opts[prop] = options[prop] - } - - // set read options - opts.start = offset - opts.end = Math.max(offset, offset + len - 1) - - // content-length - res.setHeader('Content-Length', len) - - // HEAD support - if (req.method === 'HEAD') { - res.end() - return - } - - this.stream(path, opts) -} - -/** - * Transfer file for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendFile = function sendFile (path) { - var i = 0 - var self = this - - debug('stat "%s"', path) - fs.stat(path, function onstat (err, stat) { - var pathEndsWithSep = path[path.length - 1] === sep - if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) { - // not found, check extensions - return next(err) - } - if (err) return self.onStatError(err) - if (stat.isDirectory()) return self.redirect(path) - if (pathEndsWithSep) return self.error(404) - self.emit('file', path, stat) - self.send(path, stat) - }) - - function next (err) { - if (self._extensions.length <= i) { - return err - ? self.onStatError(err) - : self.error(404) - } - - var p = path + '.' + self._extensions[i++] - - debug('stat "%s"', p) - fs.stat(p, function (err, stat) { - if (err) return next(err) - if (stat.isDirectory()) return next() - self.emit('file', p, stat) - self.send(p, stat) - }) - } -} - -/** - * Transfer index for `path`. - * - * @param {String} path - * @api private - */ -SendStream.prototype.sendIndex = function sendIndex (path) { - var i = -1 - var self = this - - function next (err) { - if (++i >= self._index.length) { - if (err) return self.onStatError(err) - return self.error(404) - } - - var p = join(path, self._index[i]) - - debug('stat "%s"', p) - fs.stat(p, function (err, stat) { - if (err) return next(err) - if (stat.isDirectory()) return next() - self.emit('file', p, stat) - self.send(p, stat) - }) - } - - next() -} - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function stream (path, options) { - var self = this - var res = this.res - - // pipe - var stream = fs.createReadStream(path, options) - this.emit('stream', stream) - stream.pipe(res) - - // cleanup - function cleanup () { - stream.destroy() - } - - // response finished, cleanup - onFinished(res, cleanup) - - // error handling - stream.on('error', function onerror (err) { - // clean up stream early - cleanup() - - // error - self.onStatError(err) - }) - - // end - stream.on('end', function onend () { - self.emit('end') - }) -} - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function type (path) { - var res = this.res - - if (res.getHeader('Content-Type')) return - - var ext = extname(path) - var type = mime.contentType(ext) || 'application/octet-stream' - - debug('content-type %s', type) - res.setHeader('Content-Type', type) -} - -/** - * Set response header fields, most - * fields may be pre-defined. - * - * @param {String} path - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function setHeader (path, stat) { - var res = this.res - - this.emit('headers', res, path, stat) - - if (this._acceptRanges && !res.getHeader('Accept-Ranges')) { - debug('accept ranges') - res.setHeader('Accept-Ranges', 'bytes') - } - - if (this._cacheControl && !res.getHeader('Cache-Control')) { - var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000) - - if (this._immutable) { - cacheControl += ', immutable' - } - - debug('cache-control %s', cacheControl) - res.setHeader('Cache-Control', cacheControl) - } - - if (this._lastModified && !res.getHeader('Last-Modified')) { - var modified = stat.mtime.toUTCString() - debug('modified %s', modified) - res.setHeader('Last-Modified', modified) - } - - if (this._etag && !res.getHeader('ETag')) { - var val = etag(stat) - debug('etag %s', val) - res.setHeader('ETag', val) - } -} - -/** - * Clear all headers from a response. - * - * @param {object} res - * @private - */ - -function clearHeaders (res) { - for (const header of res.getHeaderNames()) { - res.removeHeader(header) - } -} - -/** - * Collapse all leading slashes into a single slash - * - * @param {string} str - * @private - */ -function collapseLeadingSlashes (str) { - for (var i = 0; i < str.length; i++) { - if (str[i] !== '/') { - break - } - } - - return i > 1 - ? '/' + str.substr(i) - : str -} - -/** - * Determine if path parts contain a dotfile. - * - * @api private - */ - -function containsDotFile (parts) { - for (var i = 0; i < parts.length; i++) { - var part = parts[i] - if (part.length > 1 && part[0] === '.') { - return true - } - } - - return false -} - -/** - * Create a Content-Range header. - * - * @param {string} type - * @param {number} size - * @param {array} [range] - */ - -function contentRange (type, size, range) { - return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size -} - -/** - * Create a minimal HTML document. - * - * @param {string} title - * @param {string} body - * @private - */ - -function createHtmlDocument (title, body) { - return '\n' + - '\n' + - '\n' + - '\n' + - '' + title + '\n' + - '\n' + - '\n' + - '
' + body + '
\n' + - '\n' + - '\n' -} - -/** - * Create a HttpError object from simple arguments. - * - * @param {number} status - * @param {Error|object} err - * @private - */ - -function createHttpError (status, err) { - if (!err) { - return createError(status) - } - - return err instanceof Error - ? createError(status, err, { expose: false }) - : createError(status, err) -} - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -function decode (path) { - try { - return decodeURIComponent(path) - } catch (err) { - return -1 - } -} - -/** - * Determine if emitter has listeners of a given type. - * - * The way to do this check is done three different ways in Node.js >= 0.10 - * so this consolidates them into a minimal set using instance methods. - * - * @param {EventEmitter} emitter - * @param {string} type - * @returns {boolean} - * @private - */ - -function hasListeners (emitter, type) { - var count = typeof emitter.listenerCount !== 'function' - ? emitter.listeners(type).length - : emitter.listenerCount(type) - - return count > 0 -} - -/** - * Normalize the index option into an array. - * - * @param {boolean|string|array} val - * @param {string} name - * @private - */ - -function normalizeList (val, name) { - var list = [].concat(val || []) - - for (var i = 0; i < list.length; i++) { - if (typeof list[i] !== 'string') { - throw new TypeError(name + ' must be array of strings or false') - } - } - - return list -} - -/** - * Parse an HTTP Date into a number. - * - * @param {string} date - * @private - */ - -function parseHttpDate (date) { - var timestamp = date && Date.parse(date) - - return typeof timestamp === 'number' - ? timestamp - : NaN -} - -/** - * Parse a HTTP token list. - * - * @param {string} str - * @private - */ - -function parseTokenList (str) { - var end = 0 - var list = [] - var start = 0 - - // gather tokens - for (var i = 0, len = str.length; i < len; i++) { - switch (str.charCodeAt(i)) { - case 0x20: /* */ - if (start === end) { - start = end = i + 1 - } - break - case 0x2c: /* , */ - if (start !== end) { - list.push(str.substring(start, end)) - } - start = end = i + 1 - break - default: - end = i + 1 - break - } - } - - // final token - if (start !== end) { - list.push(str.substring(start, end)) - } - - return list -} - -/** - * Set an object of headers on a response. - * - * @param {object} res - * @param {object} headers - * @private - */ - -function setHeaders (res, headers) { - var keys = Object.keys(headers) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - res.setHeader(key, headers[key]) - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/package.json deleted file mode 100644 index d6a969a..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/send/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "send", - "description": "Better streaming static file server with Range and conditional-GET support", - "version": "1.2.0", - "author": "TJ Holowaychuk ", - "contributors": [ - "Douglas Christopher Wilson ", - "James Wyatt Cready ", - "JesĂșs LeganĂ©s Combarro " - ], - "license": "MIT", - "repository": "pillarjs/send", - "keywords": [ - "static", - "file", - "server" - ], - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "devDependencies": { - "after": "^0.8.2", - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "^10.7.0", - "nyc": "^17.0.0", - "supertest": "6.2.2" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 18" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --check-leaks --reporter spec", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/HISTORY.md deleted file mode 100644 index a3f174e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/HISTORY.md +++ /dev/null @@ -1,516 +0,0 @@ -2.2.0 / 2025-03-27 -================== - -* deps: send@^1.2.0 - -2.1.0 / 2024-09-10 -=================== - -* Changes from 1.16.0 -* deps: send@^1.2.0 - -2.0.0 / 2024-08-23 -================== - -* deps: - * parseurl@^1.3.3 - * excape-html@^1.0.3 - * encodeurl@^2.0.0 - * supertest@^6.3.4 - * safe-buffer@^5.2.1 - * nyc@^17.0.0 - * mocha@^10.7.0 -* Changes from 1.x - -2.0.0-beta.2 / 2024-03-20 -========================= - - * deps: send@1.0.0-beta.2 - -2.0.0-beta.1 / 2022-02-05 -========================= - - * Change `dotfiles` option default to `'ignore'` - * Drop support for Node.js 0.8 - * Remove `hidden` option; use `dotfiles` option instead - * Remove `mime` export; use `mime-types` package instead - * deps: send@1.0.0-beta.1 - - Use `mime-types` for file to content type mapping - - deps: debug@3.1.0 - -1.16.0 / 2024-09-10 -=================== - -* Remove link renderization in html while redirecting - -1.15.0 / 2022-03-24 -=================== - - * deps: send@0.18.0 - - Fix emitted 416 error missing headers property - - Limit the headers removed for 304 response - - deps: depd@2.0.0 - - deps: destroy@1.2.0 - - deps: http-errors@2.0.0 - - deps: on-finished@2.4.1 - - deps: statuses@2.0.1 - -1.14.2 / 2021-12-15 -=================== - - * deps: send@0.17.2 - - deps: http-errors@1.8.1 - - deps: ms@2.1.3 - - pref: ignore empty http tokens - -1.14.1 / 2019-05-10 -=================== - - * Set stricter CSP header in redirect response - * deps: send@0.17.1 - - deps: range-parser@~1.2.1 - -1.14.0 / 2019-05-07 -=================== - - * deps: parseurl@~1.3.3 - * deps: send@0.17.0 - - deps: http-errors@~1.7.2 - - deps: mime@1.6.0 - - deps: ms@2.1.1 - - deps: statuses@~1.5.0 - - perf: remove redundant `path.normalize` call - -1.13.2 / 2018-02-07 -=================== - - * Fix incorrect end tag in redirects - * deps: encodeurl@~1.0.2 - - Fix encoding `%` as last character - * deps: send@0.16.2 - - deps: depd@~1.1.2 - - deps: encodeurl@~1.0.2 - - deps: statuses@~1.4.0 - -1.13.1 / 2017-09-29 -=================== - - * Fix regression when `root` is incorrectly set to a file - * deps: send@0.16.1 - -1.13.0 / 2017-09-27 -=================== - - * deps: send@0.16.0 - - Add 70 new types for file extensions - - Add `immutable` option - - Fix missing `` in default error & redirects - - Set charset as "UTF-8" for .js and .json - - Use instance methods on steam to check for listeners - - deps: mime@1.4.1 - - perf: improve path validation speed - -1.12.6 / 2017-09-22 -=================== - - * deps: send@0.15.6 - - deps: debug@2.6.9 - - perf: improve `If-Match` token parsing - * perf: improve slash collapsing - -1.12.5 / 2017-09-21 -=================== - - * deps: parseurl@~1.3.2 - - perf: reduce overhead for full URLs - - perf: unroll the "fast-path" `RegExp` - * deps: send@0.15.5 - - Fix handling of modified headers with invalid dates - - deps: etag@~1.8.1 - - deps: fresh@0.5.2 - -1.12.4 / 2017-08-05 -=================== - - * deps: send@0.15.4 - - deps: debug@2.6.8 - - deps: depd@~1.1.1 - - deps: http-errors@~1.6.2 - -1.12.3 / 2017-05-16 -=================== - - * deps: send@0.15.3 - - deps: debug@2.6.7 - -1.12.2 / 2017-04-26 -=================== - - * deps: send@0.15.2 - - deps: debug@2.6.4 - -1.12.1 / 2017-03-04 -=================== - - * deps: send@0.15.1 - - Fix issue when `Date.parse` does not return `NaN` on invalid date - - Fix strict violation in broken environments - -1.12.0 / 2017-02-25 -=================== - - * Send complete HTML document in redirect response - * Set default CSP header in redirect response - * deps: send@0.15.0 - - Fix false detection of `no-cache` request directive - - Fix incorrect result when `If-None-Match` has both `*` and ETags - - Fix weak `ETag` matching to match spec - - Remove usage of `res._headers` private field - - Support `If-Match` and `If-Unmodified-Since` headers - - Use `res.getHeaderNames()` when available - - Use `res.headersSent` when available - - deps: debug@2.6.1 - - deps: etag@~1.8.0 - - deps: fresh@0.5.0 - - deps: http-errors@~1.6.1 - -1.11.2 / 2017-01-23 -=================== - - * deps: send@0.14.2 - - deps: http-errors@~1.5.1 - - deps: ms@0.7.2 - - deps: statuses@~1.3.1 - -1.11.1 / 2016-06-10 -=================== - - * Fix redirect error when `req.url` contains raw non-URL characters - * deps: send@0.14.1 - -1.11.0 / 2016-06-07 -=================== - - * Use status code 301 for redirects - * deps: send@0.14.0 - - Add `acceptRanges` option - - Add `cacheControl` option - - Attempt to combine multiple ranges into single range - - Correctly inherit from `Stream` class - - Fix `Content-Range` header in 416 responses when using `start`/`end` options - - Fix `Content-Range` header missing from default 416 responses - - Ignore non-byte `Range` headers - - deps: http-errors@~1.5.0 - - deps: range-parser@~1.2.0 - - deps: statuses@~1.3.0 - - perf: remove argument reassignment - -1.10.3 / 2016-05-30 -=================== - - * deps: send@0.13.2 - - Fix invalid `Content-Type` header when `send.mime.default_type` unset - -1.10.2 / 2016-01-19 -=================== - - * deps: parseurl@~1.3.1 - - perf: enable strict mode - -1.10.1 / 2016-01-16 -=================== - - * deps: escape-html@~1.0.3 - - perf: enable strict mode - - perf: optimize string replacement - - perf: use faster string coercion - * deps: send@0.13.1 - - deps: depd@~1.1.0 - - deps: destroy@~1.0.4 - - deps: escape-html@~1.0.3 - - deps: range-parser@~1.0.3 - -1.10.0 / 2015-06-17 -=================== - - * Add `fallthrough` option - - Allows declaring this middleware is the final destination - - Provides better integration with Express patterns - * Fix reading options from options prototype - * Improve the default redirect response headers - * deps: escape-html@1.0.2 - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - * perf: enable strict mode - * perf: remove argument reassignment - -1.9.3 / 2015-05-14 -================== - - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - -1.9.2 / 2015-03-14 -================== - - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - -1.9.1 / 2015-02-17 -================== - - * deps: send@0.12.1 - - Fix regression sending zero-length files - -1.9.0 / 2015-02-16 -================== - - * deps: send@0.12.0 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - -1.8.1 / 2015-01-20 -================== - - * Fix redirect loop in Node.js 0.11.14 - * deps: send@0.11.1 - - Fix root path disclosure - -1.8.0 / 2015-01-05 -================== - - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - -1.7.2 / 2015-01-02 -================== - - * Fix potential open redirect when mounted at root - -1.7.1 / 2014-10-22 -================== - - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -1.7.0 / 2014-10-15 -================== - - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -1.6.5 / 2015-02-04 -================== - - * Fix potential open redirect when mounted at root - - Back-ported from v1.7.2 - -1.6.4 / 2014-10-08 -================== - - * Fix redirect loop when index file serving disabled - -1.6.3 / 2014-09-24 -================== - - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -1.6.2 / 2014-09-15 -================== - - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -1.6.1 / 2014-09-07 -================== - - * deps: send@0.9.1 - - deps: fresh@0.2.4 - -1.6.0 / 2014-09-07 -================== - - * deps: send@0.9.0 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - -1.5.4 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -1.5.3 / 2014-08-17 -================== - - * deps: send@0.8.3 - -1.5.2 / 2014-08-14 -================== - - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -1.5.1 / 2014-08-09 -================== - - * Fix parsing of weird `req.originalUrl` values - * deps: parseurl@~1.3.0 - * deps: utils-merge@1.0.0 - -1.5.0 / 2014-08-05 -================== - - * deps: send@0.8.1 - - Add `extensions` option - -1.4.4 / 2014-08-04 -================== - - * deps: send@0.7.4 - - Fix serving index files without root dir - -1.4.3 / 2014-07-29 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - -1.4.2 / 2014-07-27 -================== - - * deps: send@0.7.2 - - deps: depd@0.4.4 - -1.4.1 / 2014-07-26 -================== - - * deps: send@0.7.1 - - deps: depd@0.4.3 - -1.4.0 / 2014-07-21 -================== - - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -1.3.2 / 2014-07-11 -================== - - * deps: send@0.6.0 - - Cap `maxAge` value to 1 year - - deps: debug@1.0.3 - -1.3.1 / 2014-07-09 -================== - - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -1.3.0 / 2014-06-28 -================== - - * Add `setHeaders` option - * Include HTML link in redirect response - * deps: send@0.5.0 - - Accept string for `maxAge` (converted by `ms`) - -1.2.3 / 2014-06-11 -================== - - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -1.2.2 / 2014-06-09 -================== - - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - -1.2.1 / 2014-06-02 -================== - - * use `escape-html` for escaping - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -1.2.0 / 2014-05-29 -================== - - * deps: send@0.4.0 - - Calculate ETag with md5 for reduced collisions - - Fix wrong behavior when index file matches directory - - Ignore stream errors after request ends - - Skip directories in index file search - - deps: debug@0.8.1 - -1.1.0 / 2014-04-24 -================== - - * Accept options directly to `send` module - * deps: send@0.3.0 - -1.0.4 / 2014-04-07 -================== - - * Resolve relative paths at middleware setup - * Use parseurl to parse the URL from request - -1.0.3 / 2014-03-20 -================== - - * Do not rely on connect-like environments - -1.0.2 / 2014-03-06 -================== - - * deps: send@0.2.0 - -1.0.1 / 2014-03-05 -================== - - * Add mime export for back-compat - -1.0.0 / 2014-03-05 -================== - - * Genesis from `connect` diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/LICENSE deleted file mode 100644 index cbe62e8..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -(The MIT License) - -Copyright (c) 2010 Sencha Inc. -Copyright (c) 2011 LearnBoost -Copyright (c) 2011 TJ Holowaychuk -Copyright (c) 2014-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/README.md deleted file mode 100644 index 70f01c3..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/README.md +++ /dev/null @@ -1,253 +0,0 @@ -# serve-static - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![CI][github-actions-ci-image]][github-actions-ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install serve-static -``` - -## API - -```js -var serveStatic = require('serve-static') -``` - -### serveStatic(root, options) - -Create a new middleware function to serve files from within a given root -directory. The file to serve will be determined by combining `req.url` -with the provided root directory. When a file is not found, instead of -sending a 404 response, this module will instead call `next()` to move on -to the next middleware, allowing for stacking and fall-backs. - -#### Options - -##### acceptRanges - -Enable or disable accepting ranged requests, defaults to true. -Disabling this will not send `Accept-Ranges` and ignore the contents -of the `Range` request header. - -##### cacheControl - -Enable or disable setting `Cache-Control` response header, defaults to -true. Disabling this will ignore the `immutable` and `maxAge` options. - -##### dotfiles - -Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when set -to "deny"). - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Deny a request for a dotfile and 403/`next()`. - - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`. - -The default value is `'ignore'`. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -Set file extension fallbacks. When set, if a file is not found, the given -extensions will be added to the file name and search for. The first that -exists will be served. Example: `['html', 'htm']`. - -The default value is `false`. - -##### fallthrough - -Set the middleware to have client errors fall-through as just unhandled -requests, otherwise forward a client error. The difference is that client -errors like a bad request or a request to a non-existent file will cause -this middleware to simply `next()` to your next middleware when this value -is `true`. When this value is `false`, these errors (even 404s), will invoke -`next(err)`. - -Typically `true` is desired such that multiple physical directories can be -mapped to the same web address or for routes to fill in non-existent files. - -The value `false` can be used if this middleware is mounted at a path that -is designed to be strictly a single file system directory, which allows for -short-circuiting 404s for less overhead. This middleware will also reply to -all methods. - -The default value is `true`. - -##### immutable - -Enable or disable the `immutable` directive in the `Cache-Control` response -header, defaults to `false`. If set to `true`, the `maxAge` option should -also be specified to enable caching. The `immutable` directive will prevent -supported clients from making conditional requests during the life of the -`maxAge` option to check if the file has changed. - -##### index - -By default this module will send "index.html" files in response to a request -on a directory. To disable this set `false` or to supply a new index pass a -string or an array in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. This -can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme) -module. - -##### redirect - -Redirect to trailing "/" when the pathname is a dir. Defaults to `true`. - -##### setHeaders - -Function to set custom headers on response. Alterations to the headers need to -occur synchronously. The function is called as `fn(res, path, stat)`, where -the arguments are: - - - `res` the response object - - `path` the file path that is being sent - - `stat` the stat object of the file that is being sent - -## Examples - -### Serve files with vanilla node.js http server - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] }) - -// Create server -var server = http.createServer(function onRequest (req, res) { - serve(req, res, finalhandler(req, res)) -}) - -// Listen -server.listen(3000) -``` - -### Serve all files as downloads - -```js -var contentDisposition = require('content-disposition') -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { - index: false, - setHeaders: setHeaders -}) - -// Set header to force download -function setHeaders (res, path) { - res.setHeader('Content-Disposition', contentDisposition(path)) -} - -// Create server -var server = http.createServer(function onRequest (req, res) { - serve(req, res, finalhandler(req, res)) -}) - -// Listen -server.listen(3000) -``` - -### Serving using express - -#### Simple - -This is a simple example of using Express. - -```js -var express = require('express') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic('public/ftp', { index: ['default.html', 'default.htm'] })) -app.listen(3000) -``` - -#### Multiple roots - -This example shows a simple way to search through multiple directories. -Files are searched for in `public-optimized/` first, then `public/` second -as a fallback. - -```js -var express = require('express') -var path = require('path') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(path.join(__dirname, 'public-optimized'))) -app.use(serveStatic(path.join(__dirname, 'public'))) -app.listen(3000) -``` - -#### Different settings for paths - -This example shows how to set a different max age depending on the served -file. In this example, HTML files are not cached, while everything else -is for 1 day. - -```js -var express = require('express') -var path = require('path') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(path.join(__dirname, 'public'), { - maxAge: '1d', - setHeaders: setCustomCacheControl -})) - -app.listen(3000) - -function setCustomCacheControl (res, file) { - if (path.extname(file) === '.html') { - // Custom Cache-Control for HTML files - res.setHeader('Cache-Control', 'public, max-age=0') - } -} -``` - -## License - -[MIT](LICENSE) - -[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/serve-static/master -[coveralls-url]: https://coveralls.io/r/expressjs/serve-static?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/serve-static/master?label=linux -[github-actions-ci-url]: https://github.com/expressjs/serve-static/actions/workflows/ci.yml -[node-image]: https://badgen.net/npm/node/serve-static -[node-url]: https://nodejs.org/en/download/ -[npm-downloads-image]: https://badgen.net/npm/dm/serve-static -[npm-url]: https://npmjs.org/package/serve-static -[npm-version-image]: https://badgen.net/npm/v/serve-static diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/index.js deleted file mode 100644 index 1bee463..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/index.js +++ /dev/null @@ -1,208 +0,0 @@ -/*! - * serve-static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var parseUrl = require('parseurl') -var resolve = require('path').resolve -var send = require('send') -var url = require('url') - -/** - * Module exports. - * @public - */ - -module.exports = serveStatic - -/** - * @param {string} root - * @param {object} [options] - * @return {function} - * @public - */ - -function serveStatic (root, options) { - if (!root) { - throw new TypeError('root path required') - } - - if (typeof root !== 'string') { - throw new TypeError('root path must be a string') - } - - // copy options object - var opts = Object.create(options || null) - - // fall-though - var fallthrough = opts.fallthrough !== false - - // default redirect - var redirect = opts.redirect !== false - - // headers listener - var setHeaders = opts.setHeaders - - if (setHeaders && typeof setHeaders !== 'function') { - throw new TypeError('option setHeaders must be function') - } - - // setup options for send - opts.maxage = opts.maxage || opts.maxAge || 0 - opts.root = resolve(root) - - // construct directory listener - var onDirectory = redirect - ? createRedirectDirectoryListener() - : createNotFoundDirectoryListener() - - return function serveStatic (req, res, next) { - if (req.method !== 'GET' && req.method !== 'HEAD') { - if (fallthrough) { - return next() - } - - // method not allowed - res.statusCode = 405 - res.setHeader('Allow', 'GET, HEAD') - res.setHeader('Content-Length', '0') - res.end() - return - } - - var forwardError = !fallthrough - var originalUrl = parseUrl.original(req) - var path = parseUrl(req).pathname - - // make sure redirect occurs at mount - if (path === '/' && originalUrl.pathname.substr(-1) !== '/') { - path = '' - } - - // create send stream - var stream = send(req, path, opts) - - // add directory handler - stream.on('directory', onDirectory) - - // add headers listener - if (setHeaders) { - stream.on('headers', setHeaders) - } - - // add file listener for fallthrough - if (fallthrough) { - stream.on('file', function onFile () { - // once file is determined, always forward error - forwardError = true - }) - } - - // forward errors - stream.on('error', function error (err) { - if (forwardError || !(err.statusCode < 500)) { - next(err) - return - } - - next() - }) - - // pipe - stream.pipe(res) - } -} - -/** - * Collapse all leading slashes into a single slash - * @private - */ -function collapseLeadingSlashes (str) { - for (var i = 0; i < str.length; i++) { - if (str.charCodeAt(i) !== 0x2f /* / */) { - break - } - } - - return i > 1 - ? '/' + str.substr(i) - : str -} - -/** - * Create a minimal HTML document. - * - * @param {string} title - * @param {string} body - * @private - */ - -function createHtmlDocument (title, body) { - return '\n' + - '\n' + - '\n' + - '\n' + - '' + title + '\n' + - '\n' + - '\n' + - '
' + body + '
\n' + - '\n' + - '\n' -} - -/** - * Create a directory listener that just 404s. - * @private - */ - -function createNotFoundDirectoryListener () { - return function notFound () { - this.error(404) - } -} - -/** - * Create a directory listener that performs a redirect. - * @private - */ - -function createRedirectDirectoryListener () { - return function redirect (res) { - if (this.hasTrailingSlash()) { - this.error(404) - return - } - - // get original URL - var originalUrl = parseUrl.original(this.req) - - // append trailing slash - originalUrl.path = null - originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/') - - // reformat the URL - var loc = encodeUrl(url.format(originalUrl)) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) - - // send redirect response - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(doc)) - res.setHeader('Content-Security-Policy', "default-src 'none'") - res.setHeader('X-Content-Type-Options', 'nosniff') - res.setHeader('Location', loc) - res.end(doc) - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/package.json deleted file mode 100644 index 38d3365..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/serve-static/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "serve-static", - "description": "Serve static files", - "version": "2.2.0", - "author": "Douglas Christopher Wilson ", - "license": "MIT", - "repository": "expressjs/serve-static", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "^10.7.0", - "nyc": "^17.0.0", - "supertest": "^6.3.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 18" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/HISTORY.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/HISTORY.md deleted file mode 100644 index 6812655..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/HISTORY.md +++ /dev/null @@ -1,292 +0,0 @@ -2.0.1 / 2025-03-27 -========== - -2.0.0 / 2024-08-31 -========== - - * Drop node <18 - * Use `content-type@^1.0.5` and `media-typer@^1.0.0` for type validation - - No behavior changes, upgrades `media-typer` - * deps: mime-types@^3.0.0 - - Add `application/toml` with extension `.toml` - - Add `application/ubjson` with extension `.ubj` - - Add `application/x-keepass2` with extension `.kdbx` - - Add deprecated iWorks mime types and extensions - - Add extension `.amr` to `audio/amr` - - Add extension `.cjs` to `application/node` - - Add extension `.dbf` to `application/vnd.dbf` - - Add extension `.m4s` to `video/iso.segment` - - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - - Add extension `.mxmf` to `audio/mobile-xmf` - - Add extension `.opus` to `audio/ogg` - - Add extension `.rar` to `application/vnd.rar` - - Add extension `.td` to `application/urc-targetdesc+xml` - - Add extension `.trig` to `application/trig` - - Add extensions from IANA for `application/*+xml` types - - Add `image/avif` with extension `.avif` - - Add `image/ktx2` with extension `.ktx2` - - Add `image/vnd.ms-dds` with extension `.dds` - - Add new upstream MIME types - - Fix extension of `application/vnd.apple.keynote` to be `.key` - - Remove ambigious extensions from IANA for `application/*+xml` types - - Update primary extension to `.es` for `application/ecmascript` - -1.6.18 / 2019-04-26 -=================== - - * Fix regression passing request object to `typeis.is` - -1.6.17 / 2019-04-25 -=================== - - * deps: mime-types@~2.1.24 - - Add Apple file extensions from IANA - - Add extension `.csl` to `application/vnd.citationstyles.style+xml` - - Add extension `.es` to `application/ecmascript` - - Add extension `.nq` to `application/n-quads` - - Add extension `.nt` to `application/n-triples` - - Add extension `.owl` to `application/rdf+xml` - - Add extensions `.siv` and `.sieve` to `application/sieve` - - Add extensions from IANA for `image/*` types - - Add extensions from IANA for `model/*` types - - Add extensions to HEIC image types - - Add new mime types - - Add `text/mdx` with extension `.mdx` - * perf: prevent internal `throw` on invalid type - -1.6.16 / 2018-02-16 -=================== - - * deps: mime-types@~2.1.18 - - Add `application/raml+yaml` with extension `.raml` - - Add `application/wasm` with extension `.wasm` - - Add `text/shex` with extension `.shex` - - Add extensions for JPEG-2000 images - - Add extensions from IANA for `message/*` types - - Add extension `.mjs` to `application/javascript` - - Add extension `.wadl` to `application/vnd.sun.wadl+xml` - - Add extension `.gz` to `application/gzip` - - Add glTF types and extensions - - Add new mime types - - Update extensions `.md` and `.markdown` to be `text/markdown` - - Update font MIME types - - Update `text/hjson` to registered `application/hjson` - -1.6.15 / 2017-03-31 -=================== - - * deps: mime-types@~2.1.15 - - Add new mime types - -1.6.14 / 2016-11-18 -=================== - - * deps: mime-types@~2.1.13 - - Add new mime types - -1.6.13 / 2016-05-18 -=================== - - * deps: mime-types@~2.1.11 - - Add new mime types - -1.6.12 / 2016-02-28 -=================== - - * deps: mime-types@~2.1.10 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -1.6.11 / 2016-01-29 -=================== - - * deps: mime-types@~2.1.9 - - Add new mime types - -1.6.10 / 2015-12-01 -=================== - - * deps: mime-types@~2.1.8 - - Add new mime types - -1.6.9 / 2015-09-27 -================== - - * deps: mime-types@~2.1.7 - - Add new mime types - -1.6.8 / 2015-09-04 -================== - - * deps: mime-types@~2.1.6 - - Add new mime types - -1.6.7 / 2015-08-20 -================== - - * Fix type error when given invalid type to match against - * deps: mime-types@~2.1.5 - - Add new mime types - -1.6.6 / 2015-07-31 -================== - - * deps: mime-types@~2.1.4 - - Add new mime types - -1.6.5 / 2015-07-16 -================== - - * deps: mime-types@~2.1.3 - - Add new mime types - -1.6.4 / 2015-07-01 -================== - - * deps: mime-types@~2.1.2 - - Add new mime types - * perf: enable strict mode - * perf: remove argument reassignment - -1.6.3 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - Add new mime types - * perf: reduce try block size - * perf: remove bitwise operations - -1.6.2 / 2015-05-10 -================== - - * deps: mime-types@~2.0.11 - - Add new mime types - -1.6.1 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - Add new mime types - -1.6.0 / 2015-02-12 -================== - - * fix false-positives in `hasBody` `Transfer-Encoding` check - * support wildcard for both type and subtype (`*/*`) - -1.5.7 / 2015-02-09 -================== - - * fix argument reassignment - * deps: mime-types@~2.0.9 - - Add new mime types - -1.5.6 / 2015-01-29 -================== - - * deps: mime-types@~2.0.8 - - Add new mime types - -1.5.5 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - Add new mime types - - Fix missing extensions - - Fix various invalid MIME type entries - - Remove example template MIME types - - deps: mime-db@~1.5.0 - -1.5.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - Add new mime types - - deps: mime-db@~1.3.0 - -1.5.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - Add new mime types - - deps: mime-db@~1.2.0 - -1.5.2 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - Add new mime types - - deps: mime-db@~1.1.0 - -1.5.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - * deps: media-typer@0.3.0 - * deps: mime-types@~2.0.1 - - Support Node.js 0.6 - -1.5.0 / 2014-09-05 -================== - - * fix `hasbody` to be true for `content-length: 0` - -1.4.0 / 2014-09-02 -================== - - * update mime-types - -1.3.2 / 2014-06-24 -================== - - * use `~` range on mime-types - -1.3.1 / 2014-06-19 -================== - - * fix global variable leak - -1.3.0 / 2014-06-19 -================== - - * improve type parsing - - - invalid media type never matches - - media type not case-sensitive - - extra LWS does not affect results - -1.2.2 / 2014-06-19 -================== - - * fix behavior on unknown type argument - -1.2.1 / 2014-06-03 -================== - - * switch dependency from `mime` to `mime-types@1.0.0` - -1.2.0 / 2014-05-11 -================== - - * support suffix matching: - - - `+json` matches `application/vnd+json` - - `*/vnd+json` matches `application/vnd+json` - - `application/*+json` matches `application/vnd+json` - -1.1.0 / 2014-04-12 -================== - - * add non-array values support - * expose internal utilities: - - - `.is()` - - `.hasBody()` - - `.normalize()` - - `.match()` - -1.0.1 / 2014-03-30 -================== - - * add `multipart` as a shorthand diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/LICENSE b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/LICENSE deleted file mode 100644 index 386b7b6..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/README.md b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/README.md deleted file mode 100644 index d23946e..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/README.md +++ /dev/null @@ -1,198 +0,0 @@ -# type-is - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Infer the content-type of a request. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install type-is -``` - -## API - -```js -var http = require('http') -var typeis = require('type-is') - -http.createServer(function (req, res) { - var istext = typeis(req, ['text/*']) - res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') -}) -``` - -### typeis(request, types) - -Checks if the `request` is one of the `types`. If the request has no body, -even if there is a `Content-Type` header, then `null` is returned. If the -`Content-Type` header is invalid or does not matches any of the `types`, then -`false` is returned. Otherwise, a string of the type that matched is returned. - -The `request` argument is expected to be a Node.js HTTP request. The `types` -argument is an array of type strings. - -Each type in the `types` array can be one of the following: - -- A file extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. - The full mime type will be returned if matched. -- A suffix such as `+json`. This can be combined with a wildcard such as - `*/vnd+json` or `application/*+json`. The full mime type will be returned - if matched. - -Some examples to illustrate the inputs and returned value: - -```js -// req.headers.content-type = 'application/json' - -typeis(req, ['json']) // => 'json' -typeis(req, ['html', 'json']) // => 'json' -typeis(req, ['application/*']) // => 'application/json' -typeis(req, ['application/json']) // => 'application/json' - -typeis(req, ['html']) // => false -``` - -### typeis.hasBody(request) - -Returns a Boolean if the given `request` has a body, regardless of the -`Content-Type` header. - -Having a body has no relation to how large the body is (it may be 0 bytes). -This is similar to how file existence works. If a body does exist, then this -indicates that there is data to read from the Node.js request stream. - -```js -if (typeis.hasBody(req)) { - // read the body, since there is one - - req.on('data', function (chunk) { - // ... - }) -} -``` - -### typeis.is(mediaType, types) - -Checks if the `mediaType` is one of the `types`. If the `mediaType` is invalid -or does not matches any of the `types`, then `false` is returned. Otherwise, a -string of the type that matched is returned. - -The `mediaType` argument is expected to be a -[media type](https://tools.ietf.org/html/rfc6838) string. The `types` argument -is an array of type strings. - -Each type in the `types` array can be one of the following: - -- A file extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. - The full mime type will be returned if matched. -- A suffix such as `+json`. This can be combined with a wildcard such as - `*/vnd+json` or `application/*+json`. The full mime type will be returned - if matched. - -Some examples to illustrate the inputs and returned value: - -```js -var mediaType = 'application/json' - -typeis.is(mediaType, ['json']) // => 'json' -typeis.is(mediaType, ['html', 'json']) // => 'json' -typeis.is(mediaType, ['application/*']) // => 'application/json' -typeis.is(mediaType, ['application/json']) // => 'application/json' - -typeis.is(mediaType, ['html']) // => false -``` - -### typeis.match(expected, actual) - -Match the type string `expected` with `actual`, taking in to account wildcards. -A wildcard can only be in the type of the subtype part of a media type and only -in the `expected` value (as `actual` should be the real media type to match). A -suffix can still be included even with a wildcard subtype. If an input is -malformed, `false` will be returned. - -```js -typeis.match('text/html', 'text/html') // => true -typeis.match('*/html', 'text/html') // => true -typeis.match('text/*', 'text/html') // => true -typeis.match('*/*', 'text/html') // => true -typeis.match('*/*+json', 'application/x-custom+json') // => true -``` - -### typeis.normalize(type) - -Normalize a `type` string. This works by performing the following: - -- If the `type` is not a string, `false` is returned. -- If the string starts with `+` (so it is a `+suffix` shorthand like `+json`), - then it is expanded to contain the complete wildcard notation of `*/*+suffix`. -- If the string contains a `/`, then it is returned as the type. -- Else the string is assumed to be a file extension and the mapped media type is - returned, or `false` is there is no mapping. - -This includes two special mappings: - -- `'multipart'` -> `'multipart/*'` -- `'urlencoded'` -> `'application/x-www-form-urlencoded'` - -## Examples - -### Example body parser - -```js -var express = require('express') -var typeis = require('type-is') - -var app = express() - -app.use(function bodyParser (req, res, next) { - if (!typeis.hasBody(req)) { - return next() - } - - switch (typeis(req, ['urlencoded', 'json', 'multipart'])) { - case 'urlencoded': - // parse urlencoded body - throw new Error('implement urlencoded body parsing') - case 'json': - // parse json body - throw new Error('implement json body parsing') - case 'multipart': - // parse multipart body - throw new Error('implement multipart body parsing') - default: - // 415 error code - res.statusCode = 415 - res.end() - break - } -}) -``` - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/type-is/master?label=ci -[ci-url]: https://github.com/jshttp/type-is/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/type-is/master -[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master -[node-version-image]: https://badgen.net/npm/node/type-is -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/type-is -[npm-url]: https://npmjs.org/package/type-is -[npm-version-image]: https://badgen.net/npm/v/type-is -[travis-image]: https://badgen.net/travis/jshttp/type-is/master -[travis-url]: https://travis-ci.org/jshttp/type-is diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/index.js b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/index.js deleted file mode 100644 index e773845..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/index.js +++ /dev/null @@ -1,250 +0,0 @@ -/*! - * type-is - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var contentType = require('content-type') -var mime = require('mime-types') -var typer = require('media-typer') - -/** - * Module exports. - * @public - */ - -module.exports = typeofrequest -module.exports.is = typeis -module.exports.hasBody = hasbody -module.exports.normalize = normalize -module.exports.match = mimeMatch - -/** - * Compare a `value` content-type with `types`. - * Each `type` can be an extension like `html`, - * a special shortcut like `multipart` or `urlencoded`, - * or a mime type. - * - * If no types match, `false` is returned. - * Otherwise, the first `type` that matches is returned. - * - * @param {String} value - * @param {Array} types - * @public - */ - -function typeis (value, types_) { - var i - var types = types_ - - // remove parameters and normalize - var val = tryNormalizeType(value) - - // no type or invalid - if (!val) { - return false - } - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length - 1) - for (i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // no types, return the content type - if (!types || !types.length) { - return val - } - - var type - for (i = 0; i < types.length; i++) { - if (mimeMatch(normalize(type = types[i]), val)) { - return type[0] === '+' || type.indexOf('*') !== -1 - ? val - : type - } - } - - // no matches - return false -} - -/** - * Check if a request has a request body. - * A request with a body __must__ either have `transfer-encoding` - * or `content-length` headers set. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 - * - * @param {Object} request - * @return {Boolean} - * @public - */ - -function hasbody (req) { - return req.headers['transfer-encoding'] !== undefined || - !isNaN(req.headers['content-length']) -} - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains any of the give mime `type`s. - * If there is no request body, `null` is returned. - * If there is no content type, `false` is returned. - * Otherwise, it returns the first `type` that matches. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * this.is('html'); // => 'html' - * this.is('text/html'); // => 'text/html' - * this.is('text/*', 'application/json'); // => 'text/html' - * - * // When Content-Type is application/json - * this.is('json', 'urlencoded'); // => 'json' - * this.is('application/json'); // => 'application/json' - * this.is('html', 'application/*'); // => 'application/json' - * - * this.is('html'); // => false - * - * @param {Object} req - * @param {(String|Array)} types... - * @return {(String|false|null)} - * @public - */ - -function typeofrequest (req, types_) { - // no body - if (!hasbody(req)) return null - // support flattened arguments - var types = arguments.length > 2 - ? Array.prototype.slice.call(arguments, 1) - : types_ - // request content type - var value = req.headers['content-type'] - - return typeis(value, types) -} - -/** - * Normalize a mime type. - * If it's a shorthand, expand it to a valid mime type. - * - * In general, you probably want: - * - * var type = is(req, ['urlencoded', 'json', 'multipart']); - * - * Then use the appropriate body parsers. - * These three are the most common request body types - * and are thus ensured to work. - * - * @param {String} type - * @return {String|false|null} - * @public - */ - -function normalize (type) { - if (typeof type !== 'string') { - // invalid type - return false - } - - switch (type) { - case 'urlencoded': - return 'application/x-www-form-urlencoded' - case 'multipart': - return 'multipart/*' - } - - if (type[0] === '+') { - // "+json" -> "*/*+json" expando - return '*/*' + type - } - - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if `expected` mime type - * matches `actual` mime type with - * wildcard and +suffix support. - * - * @param {String} expected - * @param {String} actual - * @return {Boolean} - * @public - */ - -function mimeMatch (expected, actual) { - // invalid type - if (expected === false) { - return false - } - - // split types - var actualParts = actual.split('/') - var expectedParts = expected.split('/') - - // invalid format - if (actualParts.length !== 2 || expectedParts.length !== 2) { - return false - } - - // validate type - if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) { - return false - } - - // validate suffix wildcard - if (expectedParts[1].slice(0, 2) === '*+') { - return expectedParts[1].length <= actualParts[1].length + 1 && - expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length) - } - - // validate subtype - if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) { - return false - } - - return true -} - -/** - * Normalize a type and remove parameters. - * - * @param {string} value - * @return {(string|null)} - * @private - */ -function normalizeType (value) { - // Parse the type - var type = contentType.parse(value).type - - return typer.test(type) ? type : null -} - -/** - * Try to normalize a type and remove parameters. - * - * @param {string} value - * @return {(string|null)} - * @private - */ -function tryNormalizeType (value) { - try { - return value ? normalizeType(value) : null - } catch (err) { - return null - } -} diff --git a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/package.json b/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/package.json deleted file mode 100644 index 08586d2..0000000 --- a/mcp/node_modules/@modelcontextprotocol/sdk/node_modules/type-is/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "type-is", - "description": "Infer the content-type of a request.", - "version": "2.0.1", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "repository": "jshttp/type-is", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.1", - "nyc": "15.1.0" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - }, - "keywords": [ - "content", - "type", - "checking" - ] -} diff --git a/mcp/node_modules/accepts/HISTORY.md b/mcp/node_modules/accepts/HISTORY.md index cb5990c..627a81d 100644 --- a/mcp/node_modules/accepts/HISTORY.md +++ b/mcp/node_modules/accepts/HISTORY.md @@ -1,3 +1,10 @@ +2.0.0 / 2024-08-31 +================== + + * Drop node <18 support + * deps: mime-types@^3.0.0 + * deps: negotiator@^1.0.0 + 1.3.8 / 2022-02-02 ================== diff --git a/mcp/node_modules/accepts/README.md b/mcp/node_modules/accepts/README.md index 82680c5..f3f10c4 100644 --- a/mcp/node_modules/accepts/README.md +++ b/mcp/node_modules/accepts/README.md @@ -74,7 +74,7 @@ appears in the `types` array). If nothing in `types` is accepted, then `false` is returned. The `types` array can contain full MIME types or file extensions. Any value -that is not a full MIME types is passed to `require('mime-types').lookup`. +that is not a full MIME type is passed to `require('mime-types').lookup`. #### .types() diff --git a/mcp/node_modules/accepts/index.js b/mcp/node_modules/accepts/index.js index e9b2f63..4f2840c 100644 --- a/mcp/node_modules/accepts/index.js +++ b/mcp/node_modules/accepts/index.js @@ -229,7 +229,7 @@ function extToMime (type) { * Check if mime is valid. * * @param {String} type - * @return {String} + * @return {Boolean} * @private */ diff --git a/mcp/node_modules/accepts/package.json b/mcp/node_modules/accepts/package.json index 0f2d15d..b35b262 100644 --- a/mcp/node_modules/accepts/package.json +++ b/mcp/node_modules/accepts/package.json @@ -1,7 +1,7 @@ { "name": "accepts", "description": "Higher-level content negotiation", - "version": "1.3.8", + "version": "2.0.0", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -9,8 +9,8 @@ "license": "MIT", "repository": "jshttp/accepts", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "devDependencies": { "deep-equal": "1.0.1", diff --git a/mcp/node_modules/array-flatten/LICENSE b/mcp/node_modules/array-flatten/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/mcp/node_modules/array-flatten/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/mcp/node_modules/array-flatten/README.md b/mcp/node_modules/array-flatten/README.md deleted file mode 100644 index 91fa5b6..0000000 --- a/mcp/node_modules/array-flatten/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Array Flatten - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][downloads-image]][downloads-url] -[![Build status][travis-image]][travis-url] -[![Test coverage][coveralls-image]][coveralls-url] - -> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. - -## Installation - -``` -npm install array-flatten --save -``` - -## Usage - -```javascript -var flatten = require('array-flatten') - -flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) -//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] - -flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) -//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] - -(function () { - flatten(arguments) //=> [1, 2, 3] -})(1, [2, 3]) -``` - -## License - -MIT - -[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat -[npm-url]: https://npmjs.org/package/array-flatten -[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat -[downloads-url]: https://npmjs.org/package/array-flatten -[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat -[travis-url]: https://travis-ci.org/blakeembrey/array-flatten -[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat -[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/mcp/node_modules/array-flatten/array-flatten.js b/mcp/node_modules/array-flatten/array-flatten.js deleted file mode 100644 index 089117b..0000000 --- a/mcp/node_modules/array-flatten/array-flatten.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict' - -/** - * Expose `arrayFlatten`. - */ -module.exports = arrayFlatten - -/** - * Recursive flatten function with depth. - * - * @param {Array} array - * @param {Array} result - * @param {Number} depth - * @return {Array} - */ -function flattenWithDepth (array, result, depth) { - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (depth > 0 && Array.isArray(value)) { - flattenWithDepth(value, result, depth - 1) - } else { - result.push(value) - } - } - - return result -} - -/** - * Recursive flatten function. Omitting depth is slightly faster. - * - * @param {Array} array - * @param {Array} result - * @return {Array} - */ -function flattenForever (array, result) { - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (Array.isArray(value)) { - flattenForever(value, result) - } else { - result.push(value) - } - } - - return result -} - -/** - * Flatten an array, with the ability to define a depth. - * - * @param {Array} array - * @param {Number} depth - * @return {Array} - */ -function arrayFlatten (array, depth) { - if (depth == null) { - return flattenForever(array, []) - } - - return flattenWithDepth(array, [], depth) -} diff --git a/mcp/node_modules/array-flatten/package.json b/mcp/node_modules/array-flatten/package.json deleted file mode 100644 index 1a24e2a..0000000 --- a/mcp/node_modules/array-flatten/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "array-flatten", - "version": "1.1.1", - "description": "Flatten an array of nested arrays into a single flat array", - "main": "array-flatten.js", - "files": [ - "array-flatten.js", - "LICENSE" - ], - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "repository": { - "type": "git", - "url": "git://github.com/blakeembrey/array-flatten.git" - }, - "keywords": [ - "array", - "flatten", - "arguments", - "depth" - ], - "author": { - "name": "Blake Embrey", - "email": "hello@blakeembrey.com", - "url": "http://blakeembrey.me" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/blakeembrey/array-flatten/issues" - }, - "homepage": "https://github.com/blakeembrey/array-flatten", - "devDependencies": { - "istanbul": "^0.3.13", - "mocha": "^2.2.4", - "pre-commit": "^1.0.7", - "standard": "^3.7.3" - } -} diff --git a/mcp/node_modules/body-parser/HISTORY.md b/mcp/node_modules/body-parser/HISTORY.md index 81d23e0..17dd110 100644 --- a/mcp/node_modules/body-parser/HISTORY.md +++ b/mcp/node_modules/body-parser/HISTORY.md @@ -1,10 +1,69 @@ +2.2.0 / 2025-03-27 +========================= + +* refactor: normalize common options for all parsers +* deps: + * iconv-lite@^0.6.3 + +2.1.0 / 2025-02-10 +========================= + +* deps: + * type-is@^2.0.0 + * debug@^4.4.0 + * Removed destroy +* refactor: prefix built-in node module imports +* use the node require cache instead of custom caching + +2.0.2 / 2024-10-31 +========================= + +* remove `unpipe` package and use native `unpipe()` method + +2.0.1 / 2024-09-10 +========================= + +* Restore expected behavior `extended` to `false` + +2.0.0 / 2024-09-10 +========================= +* Propagate changes from 1.20.3 +* add brotli support #406 +* Breaking Change: Node.js 18 is the minimum supported version + +2.0.0-beta.2 / 2023-02-23 +========================= + +This incorporates all changes after 1.19.1 up to 1.20.2. + + * Remove deprecated `bodyParser()` combination middleware + * deps: debug@3.1.0 + - Add `DEBUG_HIDE_DATE` environment variable + - Change timer to per-namespace instead of global + - Change non-TTY date format + - Remove `DEBUG_FD` environment variable support + - Support 256 namespace colors + * deps: iconv-lite@0.5.2 + - Add encoding cp720 + - Add encoding UTF-32 + * deps: raw-body@3.0.0-beta.1 + +2.0.0-beta.1 / 2021-12-17 +========================= + + * Drop support for Node.js 0.8 + * `req.body` is no longer always initialized to `{}` + - it is left `undefined` unless a body is parsed + * `urlencoded` parser now defaults `extended` to `false` + * Use `on-finished` to determine when body read + 1.20.3 / 2024-09-10 =================== * deps: qs@6.13.0 * add `depth` option to customize the depth level in the parser * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) - + 1.20.2 / 2023-02-21 =================== diff --git a/mcp/node_modules/body-parser/README.md b/mcp/node_modules/body-parser/README.md index f6661b7..9fcd4c6 100644 --- a/mcp/node_modules/body-parser/README.md +++ b/mcp/node_modules/body-parser/README.md @@ -51,14 +51,12 @@ $ npm install body-parser ## API ```js -var bodyParser = require('body-parser') +const bodyParser = require('body-parser') ``` The `bodyParser` object exposes various factories to create middlewares. All middlewares will populate the `req.body` property with the parsed body when -the `Content-Type` request header matches the `type` option, or an empty -object (`{}`) if there was no body to parse, the `Content-Type` was not matched, -or an error occurred. +the `Content-Type` request header matches the `type` option. The various errors returned by this module are described in the [errors section](#errors). @@ -67,8 +65,8 @@ The various errors returned by this module are described in the Returns middleware that only parses `json` and only looks at requests where the `Content-Type` header matches the `type` option. This parser accepts any -Unicode encoding of the body and supports automatic inflation of `gzip` and -`deflate` encodings. +Unicode encoding of the body and supports automatic inflation of `gzip`, +`br` (brotli) and `deflate` encodings. A new `body` object containing the parsed data is populated on the `request` object after the middleware (i.e. `req.body`). @@ -122,7 +120,8 @@ encoding of the request. The parsing can be aborted by throwing an error. Returns middleware that parses all bodies as a `Buffer` and only looks at requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. +parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` +encodings. A new `body` object containing the parsed data is populated on the `request` object after the middleware (i.e. `req.body`). This will be a `Buffer` object @@ -167,7 +166,8 @@ encoding of the request. The parsing can be aborted by throwing an error. Returns middleware that parses all bodies as a string and only looks at requests where the `Content-Type` header matches the `type` option. This -parser supports automatic inflation of `gzip` and `deflate` encodings. +parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` +encodings. A new `body` string containing the parsed data is populated on the `request` object after the middleware (i.e. `req.body`). This will be a string of the @@ -217,7 +217,7 @@ encoding of the request. The parsing can be aborted by throwing an error. Returns middleware that only parses `urlencoded` bodies and only looks at requests where the `Content-Type` header matches the `type` option. This parser accepts only UTF-8 encoding of the body and supports automatic -inflation of `gzip` and `deflate` encodings. +inflation of `gzip`, `br` (brotli) and `deflate` encodings. A new `body` object containing the parsed data is populated on the `request` object after the middleware (i.e. `req.body`). This object will contain @@ -231,16 +231,12 @@ any of the following keys: ##### extended -The `extended` option allows to choose between parsing the URL-encoded data -with the `querystring` library (when `false`) or the `qs` library (when -`true`). The "extended" syntax allows for rich objects and arrays to be -encoded into the URL-encoded format, allowing for a JSON-like experience -with URL-encoded. For more information, please -[see the qs library](https://www.npmjs.org/package/qs#readme). +The "extended" syntax allows for rich objects and arrays to be encoded into the +URL-encoded format, allowing for a JSON-like experience with URL-encoded. For +more information, please [see the qs +library](https://www.npmjs.org/package/qs#readme). -Defaults to `true`, but using the default has been deprecated. Please -research into the difference between `qs` and `querystring` and choose the -appropriate setting. +Defaults to `false`. ##### inflate @@ -278,6 +274,23 @@ The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)` where `buf` is a `Buffer` of the raw request body and `encoding` is the encoding of the request. The parsing can be aborted by throwing an error. +##### defaultCharset + +The default charset to parse as, if not specified in content-type. Must be +either `utf-8` or `iso-8859-1`. Defaults to `utf-8`. + +##### charsetSentinel + +Whether to let the value of the `utf8` parameter take precedence as the charset +selector. It requires the form to contain a parameter named `utf8` with a value +of `✓`. Defaults to `false`. + +##### interpretNumericEntities + +Whether to decode numeric entities such as `☺` when parsing an iso-8859-1 +form. Defaults to `false`. + + #### depth The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. @@ -391,13 +404,13 @@ top-level middleware, which will parse the bodies of all incoming requests. This is the simplest setup. ```js -var express = require('express') -var bodyParser = require('body-parser') +const express = require('express') +const bodyParser = require('body-parser') -var app = express() +const app = express() // parse application/x-www-form-urlencoded -app.use(bodyParser.urlencoded({ extended: false })) +app.use(bodyParser.urlencoded()) // parse application/json app.use(bodyParser.json()) @@ -405,7 +418,7 @@ app.use(bodyParser.json()) app.use(function (req, res) { res.setHeader('Content-Type', 'text/plain') res.write('you posted:\n') - res.end(JSON.stringify(req.body, null, 2)) + res.end(String(JSON.stringify(req.body, null, 2))) }) ``` @@ -416,24 +429,26 @@ need them. In general, this is the most recommended way to use body-parser with Express. ```js -var express = require('express') -var bodyParser = require('body-parser') +const express = require('express') +const bodyParser = require('body-parser') -var app = express() +const app = express() // create application/json parser -var jsonParser = bodyParser.json() +const jsonParser = bodyParser.json() // create application/x-www-form-urlencoded parser -var urlencodedParser = bodyParser.urlencoded({ extended: false }) +const urlencodedParser = bodyParser.urlencoded() // POST /login gets urlencoded bodies app.post('/login', urlencodedParser, function (req, res) { + if (!req.body || !req.body.username) res.sendStatus(400) res.send('welcome, ' + req.body.username) }) // POST /api/users gets JSON bodies app.post('/api/users', jsonParser, function (req, res) { + if (!req.body) res.sendStatus(400) // create user in req.body }) ``` @@ -444,10 +459,10 @@ All the parsers accept a `type` option which allows you to change the `Content-Type` that the middleware will parse. ```js -var express = require('express') -var bodyParser = require('body-parser') +const express = require('express') +const bodyParser = require('body-parser') -var app = express() +const app = express() // parse various different custom JSON types as JSON app.use(bodyParser.json({ type: 'application/*+json' })) diff --git a/mcp/node_modules/body-parser/SECURITY.md b/mcp/node_modules/body-parser/SECURITY.md deleted file mode 100644 index 9694d42..0000000 --- a/mcp/node_modules/body-parser/SECURITY.md +++ /dev/null @@ -1,25 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The Express team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `body-parser`. This -information can be found in the npm registry using the command -`npm owner ls body-parser`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/expressjs/body-parser/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/mcp/node_modules/body-parser/index.js b/mcp/node_modules/body-parser/index.js index bb24d73..d722d0b 100644 --- a/mcp/node_modules/body-parser/index.js +++ b/mcp/node_modules/body-parser/index.js @@ -6,20 +6,6 @@ 'use strict' -/** - * Module dependencies. - * @private - */ - -var deprecate = require('depd')('body-parser') - -/** - * Cache of loaded parsers. - * @private - */ - -var parsers = Object.create(null) - /** * @typedef Parsers * @type {function} @@ -34,8 +20,7 @@ var parsers = Object.create(null) * @type {Parsers} */ -exports = module.exports = deprecate.function(bodyParser, - 'bodyParser: use individual json/urlencoded middlewares') +exports = module.exports = bodyParser /** * JSON parser. @@ -45,7 +30,7 @@ exports = module.exports = deprecate.function(bodyParser, Object.defineProperty(exports, 'json', { configurable: true, enumerable: true, - get: createParserGetter('json') + get: () => require('./lib/types/json') }) /** @@ -56,7 +41,7 @@ Object.defineProperty(exports, 'json', { Object.defineProperty(exports, 'raw', { configurable: true, enumerable: true, - get: createParserGetter('raw') + get: () => require('./lib/types/raw') }) /** @@ -67,7 +52,7 @@ Object.defineProperty(exports, 'raw', { Object.defineProperty(exports, 'text', { configurable: true, enumerable: true, - get: createParserGetter('text') + get: () => require('./lib/types/text') }) /** @@ -78,7 +63,7 @@ Object.defineProperty(exports, 'text', { Object.defineProperty(exports, 'urlencoded', { configurable: true, enumerable: true, - get: createParserGetter('urlencoded') + get: () => require('./lib/types/urlencoded') }) /** @@ -90,67 +75,6 @@ Object.defineProperty(exports, 'urlencoded', { * @public */ -function bodyParser (options) { - // use default type for parsers - var opts = Object.create(options || null, { - type: { - configurable: true, - enumerable: true, - value: undefined, - writable: true - } - }) - - var _urlencoded = exports.urlencoded(opts) - var _json = exports.json(opts) - - return function bodyParser (req, res, next) { - _json(req, res, function (err) { - if (err) return next(err) - _urlencoded(req, res, next) - }) - } -} - -/** - * Create a getter for loading a parser. - * @private - */ - -function createParserGetter (name) { - return function get () { - return loadParser(name) - } -} - -/** - * Load a parser module. - * @private - */ - -function loadParser (parserName) { - var parser = parsers[parserName] - - if (parser !== undefined) { - return parser - } - - // this uses a switch for static require analysis - switch (parserName) { - case 'json': - parser = require('./lib/types/json') - break - case 'raw': - parser = require('./lib/types/raw') - break - case 'text': - parser = require('./lib/types/text') - break - case 'urlencoded': - parser = require('./lib/types/urlencoded') - break - } - - // store to prevent invoking require() - return (parsers[parserName] = parser) +function bodyParser () { + throw new Error('The bodyParser() generic has been split into individual middleware to use instead.') } diff --git a/mcp/node_modules/body-parser/lib/read.js b/mcp/node_modules/body-parser/lib/read.js index fce6283..eee8b11 100644 --- a/mcp/node_modules/body-parser/lib/read.js +++ b/mcp/node_modules/body-parser/lib/read.js @@ -12,12 +12,10 @@ */ var createError = require('http-errors') -var destroy = require('destroy') var getBody = require('raw-body') var iconv = require('iconv-lite') var onFinished = require('on-finished') -var unpipe = require('unpipe') -var zlib = require('zlib') +var zlib = require('node:zlib') /** * Module exports. @@ -42,9 +40,6 @@ function read (req, res, next, parse, debug, options) { var opts = options var stream - // flag as parsed - req._body = true - // read options var encoding = opts.encoding !== null ? opts.encoding @@ -93,8 +88,8 @@ function read (req, res, next, parse, debug, options) { // unpipe from stream and destroy if (stream !== req) { - unpipe(req) - destroy(stream, true) + req.unpipe() + stream.destroy() } // read off entire request @@ -125,7 +120,7 @@ function read (req, res, next, parse, debug, options) { str = typeof body !== 'string' && encoding !== null ? iconv.decode(body, encoding) : body - req.body = parse(str) + req.body = parse(str, encoding) } catch (err) { next(createError(400, err, { body: str, @@ -151,7 +146,6 @@ function read (req, res, next, parse, debug, options) { function contentstream (req, debug, inflate) { var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() var length = req.headers['content-length'] - var stream debug('content-encoding "%s"', encoding) @@ -162,29 +156,40 @@ function contentstream (req, debug, inflate) { }) } + if (encoding === 'identity') { + req.length = length + return req + } + + var stream = createDecompressionStream(encoding, debug) + req.pipe(stream) + return stream +} + +/** + * Create a decompression stream for the given encoding. + * @param {string} encoding + * @param {function} debug + * @return {object} + * @api private + */ +function createDecompressionStream (encoding, debug) { switch (encoding) { case 'deflate': - stream = zlib.createInflate() debug('inflate body') - req.pipe(stream) - break + return zlib.createInflate() case 'gzip': - stream = zlib.createGunzip() debug('gunzip body') - req.pipe(stream) - break - case 'identity': - stream = req - stream.length = length - break + return zlib.createGunzip() + case 'br': + debug('brotli decompress body') + return zlib.createBrotliDecompress() default: throw createError(415, 'unsupported content encoding "' + encoding + '"', { encoding: encoding, type: 'encoding.unsupported' }) } - - return stream } /** diff --git a/mcp/node_modules/body-parser/lib/types/json.js b/mcp/node_modules/body-parser/lib/types/json.js index 59f3f7e..078ce71 100644 --- a/mcp/node_modules/body-parser/lib/types/json.js +++ b/mcp/node_modules/body-parser/lib/types/json.js @@ -12,12 +12,12 @@ * @private */ -var bytes = require('bytes') -var contentType = require('content-type') var createError = require('http-errors') var debug = require('debug')('body-parser:json') +var isFinished = require('on-finished').isFinished var read = require('../read') var typeis = require('type-is') +var { getCharset, normalizeOptions } = require('../utils') /** * Module exports. @@ -51,25 +51,10 @@ var JSON_SYNTAX_REGEXP = /#+/g */ function json (options) { - var opts = options || {} + var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/json') - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var inflate = opts.inflate !== false - var reviver = opts.reviver - var strict = opts.strict !== false - var type = opts.type || 'application/json' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type + var reviver = options?.reviver + var strict = options?.strict !== false function parse (body) { if (body.length === 0) { @@ -99,13 +84,15 @@ function json (options) { } return function jsonParser (req, res, next) { - if (req._body) { + if (isFinished(req)) { debug('body already parsed') next() return } - req.body = req.body || {} + if (!('body' in req)) { + req.body = undefined + } // skip requests without bodies if (!typeis.hasBody(req)) { @@ -137,9 +124,9 @@ function json (options) { // read read(req, res, next, parse, debug, { encoding: charset, - inflate: inflate, - limit: limit, - verify: verify + inflate, + limit, + verify }) } } @@ -193,21 +180,6 @@ function firstchar (str) { : undefined } -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - /** * Normalize a SyntaxError for JSON.parse. * @@ -232,16 +204,3 @@ function normalizeJsonSyntaxError (error, obj) { return error } - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/mcp/node_modules/body-parser/lib/types/raw.js b/mcp/node_modules/body-parser/lib/types/raw.js index f5d1b67..3788ff2 100644 --- a/mcp/node_modules/body-parser/lib/types/raw.js +++ b/mcp/node_modules/body-parser/lib/types/raw.js @@ -10,10 +10,11 @@ * Module dependencies. */ -var bytes = require('bytes') var debug = require('debug')('body-parser:raw') +var isFinished = require('on-finished').isFinished var read = require('../read') var typeis = require('type-is') +var { normalizeOptions } = require('../utils') /** * Module exports. @@ -30,36 +31,22 @@ module.exports = raw */ function raw (options) { - var opts = options || {} - - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/octet-stream' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type + var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/octet-stream') function parse (buf) { return buf } return function rawParser (req, res, next) { - if (req._body) { + if (isFinished(req)) { debug('body already parsed') next() return } - req.body = req.body || {} + if (!('body' in req)) { + req.body = undefined + } // skip requests without bodies if (!typeis.hasBody(req)) { @@ -80,22 +67,9 @@ function raw (options) { // read read(req, res, next, parse, debug, { encoding: null, - inflate: inflate, - limit: limit, - verify: verify + inflate, + limit, + verify }) } } - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/mcp/node_modules/body-parser/lib/types/text.js b/mcp/node_modules/body-parser/lib/types/text.js index 083a009..3e0ab1b 100644 --- a/mcp/node_modules/body-parser/lib/types/text.js +++ b/mcp/node_modules/body-parser/lib/types/text.js @@ -10,11 +10,11 @@ * Module dependencies. */ -var bytes = require('bytes') -var contentType = require('content-type') var debug = require('debug')('body-parser:text') +var isFinished = require('on-finished').isFinished var read = require('../read') var typeis = require('type-is') +var { getCharset, normalizeOptions } = require('../utils') /** * Module exports. @@ -31,37 +31,24 @@ module.exports = text */ function text (options) { - var opts = options || {} + var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'text/plain') - var defaultCharset = opts.defaultCharset || 'utf-8' - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'text/plain' - var verify = opts.verify || false - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') - } - - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type + var defaultCharset = options?.defaultCharset || 'utf-8' function parse (buf) { return buf } return function textParser (req, res, next) { - if (req._body) { + if (isFinished(req)) { debug('body already parsed') next() return } - req.body = req.body || {} + if (!('body' in req)) { + req.body = undefined + } // skip requests without bodies if (!typeis.hasBody(req)) { @@ -85,37 +72,9 @@ function text (options) { // read read(req, res, next, parse, debug, { encoding: charset, - inflate: inflate, - limit: limit, - verify: verify + inflate, + limit, + verify }) } } - -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } -} diff --git a/mcp/node_modules/body-parser/lib/types/urlencoded.js b/mcp/node_modules/body-parser/lib/types/urlencoded.js index 2bd4485..f993425 100644 --- a/mcp/node_modules/body-parser/lib/types/urlencoded.js +++ b/mcp/node_modules/body-parser/lib/types/urlencoded.js @@ -12,13 +12,13 @@ * @private */ -var bytes = require('bytes') -var contentType = require('content-type') var createError = require('http-errors') var debug = require('debug')('body-parser:urlencoded') -var deprecate = require('depd')('body-parser') +var isFinished = require('on-finished').isFinished var read = require('../read') var typeis = require('type-is') +var qs = require('qs') +var { getCharset, normalizeOptions } = require('../utils') /** * Module exports. @@ -26,12 +26,6 @@ var typeis = require('type-is') module.exports = urlencoded -/** - * Cache of parser modules. - */ - -var parsers = Object.create(null) - /** * Create a middleware to parse urlencoded bodies. * @@ -41,52 +35,32 @@ var parsers = Object.create(null) */ function urlencoded (options) { - var opts = options || {} + var { inflate, limit, verify, shouldParse } = normalizeOptions(options, 'application/x-www-form-urlencoded') - // notice because option default will flip in next major - if (opts.extended === undefined) { - deprecate('undefined extended: provide extended option') - } - - var extended = opts.extended !== false - var inflate = opts.inflate !== false - var limit = typeof opts.limit !== 'number' - ? bytes.parse(opts.limit || '100kb') - : opts.limit - var type = opts.type || 'application/x-www-form-urlencoded' - var verify = opts.verify || false - var depth = typeof opts.depth !== 'number' - ? Number(opts.depth || 32) - : opts.depth - - if (verify !== false && typeof verify !== 'function') { - throw new TypeError('option verify must be function') + var defaultCharset = options?.defaultCharset || 'utf-8' + if (defaultCharset !== 'utf-8' && defaultCharset !== 'iso-8859-1') { + throw new TypeError('option defaultCharset must be either utf-8 or iso-8859-1') } // create the appropriate query parser - var queryparse = extended - ? extendedparser(opts) - : simpleparser(opts) + var queryparse = createQueryParser(options) - // create the appropriate type checking function - var shouldParse = typeof type !== 'function' - ? typeChecker(type) - : type - - function parse (body) { + function parse (body, encoding) { return body.length - ? queryparse(body) + ? queryparse(body, encoding) : {} } return function urlencodedParser (req, res, next) { - if (req._body) { + if (isFinished(req)) { debug('body already parsed') next() return } - req.body = req.body || {} + if (!('body' in req)) { + req.body = undefined + } // skip requests without bodies if (!typeis.hasBody(req)) { @@ -105,8 +79,8 @@ function urlencoded (options) { } // assert charset - var charset = getCharset(req) || 'utf-8' - if (charset !== 'utf-8') { + var charset = getCharset(req) || defaultCharset + if (charset !== 'utf-8' && charset !== 'iso-8859-1') { debug('invalid charset') next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { charset: charset, @@ -117,12 +91,10 @@ function urlencoded (options) { // read read(req, res, next, parse, debug, { - debug: debug, encoding: charset, - inflate: inflate, - limit: limit, - verify: verify, - depth: depth + inflate, + limit, + verify }) } } @@ -133,15 +105,14 @@ function urlencoded (options) { * @param {object} options */ -function extendedparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit +function createQueryParser (options) { + var extended = Boolean(options?.extended) + var parameterLimit = options?.parameterLimit !== undefined + ? options?.parameterLimit : 1000 - - var depth = typeof options.depth !== 'number' - ? Number(options.depth || 32) - : options.depth - var parse = parser('qs') + var charsetSentinel = options?.charsetSentinel + var interpretNumericEntities = options?.interpretNumericEntities + var depth = extended ? (options?.depth !== undefined ? options?.depth : 32) : 0 if (isNaN(parameterLimit) || parameterLimit < 1) { throw new TypeError('option parameterLimit must be a positive number') @@ -155,7 +126,7 @@ function extendedparser (options) { parameterLimit = parameterLimit | 0 } - return function queryparse (body) { + return function queryparse (body, encoding) { var paramCount = parameterCount(body, parameterLimit) if (paramCount === undefined) { @@ -165,16 +136,19 @@ function extendedparser (options) { }) } - var arrayLimit = Math.max(100, paramCount) + var arrayLimit = extended ? Math.max(100, paramCount) : 0 - debug('parse extended urlencoding') + debug('parse ' + (extended ? 'extended ' : '') + 'urlencoding') try { - return parse(body, { + return qs.parse(body, { allowPrototypes: true, arrayLimit: arrayLimit, depth: depth, - strictDepth: true, - parameterLimit: parameterLimit + charsetSentinel: charsetSentinel, + interpretNumericEntities: interpretNumericEntities, + charset: encoding, + parameterLimit: parameterLimit, + strictDepth: true }) } catch (err) { if (err instanceof RangeError) { @@ -188,21 +162,6 @@ function extendedparser (options) { } } -/** - * Get the charset of a request. - * - * @param {object} req - * @api private - */ - -function getCharset (req) { - try { - return (contentType.parse(req).parameters.charset || '').toLowerCase() - } catch (e) { - return undefined - } -} - /** * Count the number of parameters, stopping once limit reached * @@ -212,96 +171,7 @@ function getCharset (req) { */ function parameterCount (body, limit) { - var count = 0 - var index = 0 + var len = body.split('&').length - while ((index = body.indexOf('&', index)) !== -1) { - count++ - index++ - - if (count === limit) { - return undefined - } - } - - return count -} - -/** - * Get parser for module name dynamically. - * - * @param {string} name - * @return {function} - * @api private - */ - -function parser (name) { - var mod = parsers[name] - - if (mod !== undefined) { - return mod.parse - } - - // this uses a switch for static require analysis - switch (name) { - case 'qs': - mod = require('qs') - break - case 'querystring': - mod = require('querystring') - break - } - - // store to prevent invoking require() - parsers[name] = mod - - return mod.parse -} - -/** - * Get the simple query parser. - * - * @param {object} options - */ - -function simpleparser (options) { - var parameterLimit = options.parameterLimit !== undefined - ? options.parameterLimit - : 1000 - var parse = parser('querystring') - - if (isNaN(parameterLimit) || parameterLimit < 1) { - throw new TypeError('option parameterLimit must be a positive number') - } - - if (isFinite(parameterLimit)) { - parameterLimit = parameterLimit | 0 - } - - return function queryparse (body) { - var paramCount = parameterCount(body, parameterLimit) - - if (paramCount === undefined) { - debug('too many parameters') - throw createError(413, 'too many parameters', { - type: 'parameters.too.many' - }) - } - - debug('parse urlencoding') - return parse(body, undefined, undefined, { maxKeys: parameterLimit }) - } -} - -/** - * Get the simple type checker. - * - * @param {string} type - * @return {function} - */ - -function typeChecker (type) { - return function checkType (req) { - return Boolean(typeis(req, type)) - } + return len > limit ? undefined : len - 1 } diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/HISTORY.md b/mcp/node_modules/body-parser/node_modules/raw-body/HISTORY.md deleted file mode 100644 index baf0e2d..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/HISTORY.md +++ /dev/null @@ -1,308 +0,0 @@ -2.5.2 / 2023-02-21 -================== - - * Fix error message for non-stream argument - -2.5.1 / 2022-02-28 -================== - - * Fix error on early async hooks implementations - -2.5.0 / 2022-02-21 -================== - - * Prevent loss of async hooks context - * Prevent hanging when stream is not readable - * deps: http-errors@2.0.0 - - deps: depd@2.0.0 - - deps: statuses@2.0.1 - -2.4.3 / 2022-02-14 -================== - - * deps: bytes@3.1.2 - -2.4.2 / 2021-11-16 -================== - - * deps: bytes@3.1.1 - * deps: http-errors@1.8.1 - - deps: setprototypeof@1.2.0 - - deps: toidentifier@1.0.1 - -2.4.1 / 2019-06-25 -================== - - * deps: http-errors@1.7.3 - - deps: inherits@2.0.4 - -2.4.0 / 2019-04-17 -================== - - * deps: bytes@3.1.0 - - Add petabyte (`pb`) support - * deps: http-errors@1.7.2 - - Set constructor name when possible - - deps: setprototypeof@1.1.1 - - deps: statuses@'>= 1.5.0 < 2' - * deps: iconv-lite@0.4.24 - - Added encoding MIK - -2.3.3 / 2018-05-08 -================== - - * deps: http-errors@1.6.3 - - deps: depd@~1.1.2 - - deps: setprototypeof@1.1.0 - - deps: statuses@'>= 1.3.1 < 2' - * deps: iconv-lite@0.4.23 - - Fix loading encoding with year appended - - Fix deprecation warnings on Node.js 10+ - -2.3.2 / 2017-09-09 -================== - - * deps: iconv-lite@0.4.19 - - Fix ISO-8859-1 regression - - Update Windows-1255 - -2.3.1 / 2017-09-07 -================== - - * deps: bytes@3.0.0 - * deps: http-errors@1.6.2 - - deps: depd@1.1.1 - * perf: skip buffer decoding on overage chunk - -2.3.0 / 2017-08-04 -================== - - * Add TypeScript definitions - * Use `http-errors` for standard emitted errors - * deps: bytes@2.5.0 - * deps: iconv-lite@0.4.18 - - Add support for React Native - - Add a warning if not loaded as utf-8 - - Fix CESU-8 decoding in Node.js 8 - - Improve speed of ISO-8859-1 encoding - -2.2.0 / 2017-01-02 -================== - - * deps: iconv-lite@0.4.15 - - Added encoding MS-31J - - Added encoding MS-932 - - Added encoding MS-936 - - Added encoding MS-949 - - Added encoding MS-950 - - Fix GBK/GB18030 handling of Euro character - -2.1.7 / 2016-06-19 -================== - - * deps: bytes@2.4.0 - * perf: remove double-cleanup on happy path - -2.1.6 / 2016-03-07 -================== - - * deps: bytes@2.3.0 - - Drop partial bytes on all parsed units - - Fix parsing byte string that looks like hex - -2.1.5 / 2015-11-30 -================== - - * deps: bytes@2.2.0 - * deps: iconv-lite@0.4.13 - -2.1.4 / 2015-09-27 -================== - - * Fix masking critical errors from `iconv-lite` - * deps: iconv-lite@0.4.12 - - Fix CESU-8 decoding in Node.js 4.x - -2.1.3 / 2015-09-12 -================== - - * Fix sync callback when attaching data listener causes sync read - - Node.js 0.10 compatibility issue - -2.1.2 / 2015-07-05 -================== - - * Fix error stack traces to skip `makeError` - * deps: iconv-lite@0.4.11 - - Add encoding CESU-8 - -2.1.1 / 2015-06-14 -================== - - * Use `unpipe` module for unpiping requests - -2.1.0 / 2015-05-28 -================== - - * deps: iconv-lite@0.4.10 - - Improved UTF-16 endianness detection - - Leading BOM is now removed when decoding - - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails - -2.0.2 / 2015-05-21 -================== - - * deps: bytes@2.1.0 - - Slight optimizations - -2.0.1 / 2015-05-10 -================== - - * Fix a false-positive when unpiping in Node.js 0.8 - -2.0.0 / 2015-05-08 -================== - - * Return a promise without callback instead of thunk - * deps: bytes@2.0.1 - - units no longer case sensitive when parsing - -1.3.4 / 2015-04-15 -================== - - * Fix hanging callback if request aborts during read - * deps: iconv-lite@0.4.8 - - Add encoding alias UNICODE-1-1-UTF-7 - -1.3.3 / 2015-02-08 -================== - - * deps: iconv-lite@0.4.7 - - Gracefully support enumerables on `Object.prototype` - -1.3.2 / 2015-01-20 -================== - - * deps: iconv-lite@0.4.6 - - Fix rare aliases of single-byte encodings - -1.3.1 / 2014-11-21 -================== - - * deps: iconv-lite@0.4.5 - - Fix Windows-31J and X-SJIS encoding support - -1.3.0 / 2014-07-20 -================== - - * Fully unpipe the stream on error - - Fixes `Cannot switch to old mode now` error on Node.js 0.10+ - -1.2.3 / 2014-07-20 -================== - - * deps: iconv-lite@0.4.4 - - Added encoding UTF-7 - -1.2.2 / 2014-06-19 -================== - - * Send invalid encoding error to callback - -1.2.1 / 2014-06-15 -================== - - * deps: iconv-lite@0.4.3 - - Added encodings UTF-16BE and UTF-16 with BOM - -1.2.0 / 2014-06-13 -================== - - * Passing string as `options` interpreted as encoding - * Support all encodings from `iconv-lite` - -1.1.7 / 2014-06-12 -================== - - * use `string_decoder` module from npm - -1.1.6 / 2014-05-27 -================== - - * check encoding for old streams1 - * support node.js < 0.10.6 - -1.1.5 / 2014-05-14 -================== - - * bump bytes - -1.1.4 / 2014-04-19 -================== - - * allow true as an option - * bump bytes - -1.1.3 / 2014-03-02 -================== - - * fix case when length=null - -1.1.2 / 2013-12-01 -================== - - * be less strict on state.encoding check - -1.1.1 / 2013-11-27 -================== - - * add engines - -1.1.0 / 2013-11-27 -================== - - * add err.statusCode and err.type - * allow for encoding option to be true - * pause the stream instead of dumping on error - * throw if the stream's encoding is set - -1.0.1 / 2013-11-19 -================== - - * dont support streams1, throw if dev set encoding - -1.0.0 / 2013-11-17 -================== - - * rename `expected` option to `length` - -0.2.0 / 2013-11-15 -================== - - * republish - -0.1.1 / 2013-11-15 -================== - - * use bytes - -0.1.0 / 2013-11-11 -================== - - * generator support - -0.0.3 / 2013-10-10 -================== - - * update repo - -0.0.2 / 2013-09-14 -================== - - * dump stream on bad headers - * listen to events after defining received and buffers - -0.0.1 / 2013-09-14 -================== - - * Initial release diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/LICENSE b/mcp/node_modules/body-parser/node_modules/raw-body/LICENSE deleted file mode 100644 index 1029a7a..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2014 Jonathan Ong -Copyright (c) 2014-2022 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/README.md b/mcp/node_modules/body-parser/node_modules/raw-body/README.md deleted file mode 100644 index d9b36d6..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/README.md +++ /dev/null @@ -1,223 +0,0 @@ -# raw-body - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build status][github-actions-ci-image]][github-actions-ci-url] -[![Test coverage][coveralls-image]][coveralls-url] - -Gets the entire buffer of a stream either as a `Buffer` or a string. -Validates the stream's length against an expected length and maximum limit. -Ideal for parsing request bodies. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install raw-body -``` - -### TypeScript - -This module includes a [TypeScript](https://www.typescriptlang.org/) -declaration file to enable auto complete in compatible editors and type -information for TypeScript projects. This module depends on the Node.js -types, so install `@types/node`: - -```sh -$ npm install @types/node -``` - -## API - -```js -var getRawBody = require('raw-body') -``` - -### getRawBody(stream, [options], [callback]) - -**Returns a promise if no callback specified and global `Promise` exists.** - -Options: - -- `length` - The length of the stream. - If the contents of the stream do not add up to this length, - an `400` error code is returned. -- `limit` - The byte limit of the body. - This is the number of bytes or any string format supported by - [bytes](https://www.npmjs.com/package/bytes), - for example `1000`, `'500kb'` or `'3mb'`. - If the body ends up being larger than this limit, - a `413` error code is returned. -- `encoding` - The encoding to use to decode the body into a string. - By default, a `Buffer` instance will be returned when no encoding is specified. - Most likely, you want `utf-8`, so setting `encoding` to `true` will decode as `utf-8`. - You can use any type of encoding supported by [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme). - -You can also pass a string in place of options to just specify the encoding. - -If an error occurs, the stream will be paused, everything unpiped, -and you are responsible for correctly disposing the stream. -For HTTP requests, you may need to finish consuming the stream if -you want to keep the socket open for future requests. For streams -that use file descriptors, you should `stream.destroy()` or -`stream.close()` to prevent leaks. - -## Errors - -This module creates errors depending on the error condition during reading. -The error may be an error from the underlying Node.js implementation, but is -otherwise an error created by this module, which has the following attributes: - - * `limit` - the limit in bytes - * `length` and `expected` - the expected length of the stream - * `received` - the received bytes - * `encoding` - the invalid encoding - * `status` and `statusCode` - the corresponding status code for the error - * `type` - the error type - -### Types - -The errors from this module have a `type` property which allows for the programmatic -determination of the type of error returned. - -#### encoding.unsupported - -This error will occur when the `encoding` option is specified, but the value does -not map to an encoding supported by the [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme) -module. - -#### entity.too.large - -This error will occur when the `limit` option is specified, but the stream has -an entity that is larger. - -#### request.aborted - -This error will occur when the request stream is aborted by the client before -reading the body has finished. - -#### request.size.invalid - -This error will occur when the `length` option is specified, but the stream has -emitted more bytes. - -#### stream.encoding.set - -This error will occur when the given stream has an encoding set on it, making it -a decoded stream. The stream should not have an encoding set and is expected to -emit `Buffer` objects. - -#### stream.not.readable - -This error will occur when the given stream is not readable. - -## Examples - -### Simple Express example - -```js -var contentType = require('content-type') -var express = require('express') -var getRawBody = require('raw-body') - -var app = express() - -app.use(function (req, res, next) { - getRawBody(req, { - length: req.headers['content-length'], - limit: '1mb', - encoding: contentType.parse(req).parameters.charset - }, function (err, string) { - if (err) return next(err) - req.text = string - next() - }) -}) - -// now access req.text -``` - -### Simple Koa example - -```js -var contentType = require('content-type') -var getRawBody = require('raw-body') -var koa = require('koa') - -var app = koa() - -app.use(function * (next) { - this.text = yield getRawBody(this.req, { - length: this.req.headers['content-length'], - limit: '1mb', - encoding: contentType.parse(this.req).parameters.charset - }) - yield next -}) - -// now access this.text -``` - -### Using as a promise - -To use this library as a promise, simply omit the `callback` and a promise is -returned, provided that a global `Promise` is defined. - -```js -var getRawBody = require('raw-body') -var http = require('http') - -var server = http.createServer(function (req, res) { - getRawBody(req) - .then(function (buf) { - res.statusCode = 200 - res.end(buf.length + ' bytes submitted') - }) - .catch(function (err) { - res.statusCode = 500 - res.end(err.message) - }) -}) - -server.listen(3000) -``` - -### Using with TypeScript - -```ts -import * as getRawBody from 'raw-body'; -import * as http from 'http'; - -const server = http.createServer((req, res) => { - getRawBody(req) - .then((buf) => { - res.statusCode = 200; - res.end(buf.length + ' bytes submitted'); - }) - .catch((err) => { - res.statusCode = err.statusCode; - res.end(err.message); - }); -}); - -server.listen(3000); -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/raw-body.svg -[npm-url]: https://npmjs.org/package/raw-body -[node-version-image]: https://img.shields.io/node/v/raw-body.svg -[node-version-url]: https://nodejs.org/en/download/ -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/raw-body/master.svg -[coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master -[downloads-image]: https://img.shields.io/npm/dm/raw-body.svg -[downloads-url]: https://npmjs.org/package/raw-body -[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/stream-utils/raw-body/ci.yml?branch=master&label=ci -[github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/SECURITY.md b/mcp/node_modules/body-parser/node_modules/raw-body/SECURITY.md deleted file mode 100644 index 2421efc..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/SECURITY.md +++ /dev/null @@ -1,24 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `raw-body` team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owners of `raw-body`. This information -can be found in the npm registry using the command `npm owner ls raw-body`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/stream-utils/raw-body/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/index.d.ts b/mcp/node_modules/body-parser/node_modules/raw-body/index.d.ts deleted file mode 100644 index dcbbebd..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/index.d.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Readable } from 'stream'; - -declare namespace getRawBody { - export type Encoding = string | true; - - export interface Options { - /** - * The expected length of the stream. - */ - length?: number | string | null; - /** - * The byte limit of the body. This is the number of bytes or any string - * format supported by `bytes`, for example `1000`, `'500kb'` or `'3mb'`. - */ - limit?: number | string | null; - /** - * The encoding to use to decode the body into a string. By default, a - * `Buffer` instance will be returned when no encoding is specified. Most - * likely, you want `utf-8`, so setting encoding to `true` will decode as - * `utf-8`. You can use any type of encoding supported by `iconv-lite`. - */ - encoding?: Encoding | null; - } - - export interface RawBodyError extends Error { - /** - * The limit in bytes. - */ - limit?: number; - /** - * The expected length of the stream. - */ - length?: number; - expected?: number; - /** - * The received bytes. - */ - received?: number; - /** - * The encoding. - */ - encoding?: string; - /** - * The corresponding status code for the error. - */ - status: number; - statusCode: number; - /** - * The error type. - */ - type: string; - } -} - -/** - * Gets the entire buffer of a stream either as a `Buffer` or a string. - * Validates the stream's length against an expected length and maximum - * limit. Ideal for parsing request bodies. - */ -declare function getRawBody( - stream: Readable, - callback: (err: getRawBody.RawBodyError, body: Buffer) => void -): void; - -declare function getRawBody( - stream: Readable, - options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding, - callback: (err: getRawBody.RawBodyError, body: string) => void -): void; - -declare function getRawBody( - stream: Readable, - options: getRawBody.Options, - callback: (err: getRawBody.RawBodyError, body: Buffer) => void -): void; - -declare function getRawBody( - stream: Readable, - options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding -): Promise; - -declare function getRawBody( - stream: Readable, - options?: getRawBody.Options -): Promise; - -export = getRawBody; diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/index.js b/mcp/node_modules/body-parser/node_modules/raw-body/index.js deleted file mode 100644 index 9cdcd12..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/index.js +++ /dev/null @@ -1,336 +0,0 @@ -/*! - * raw-body - * Copyright(c) 2013-2014 Jonathan Ong - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var asyncHooks = tryRequireAsyncHooks() -var bytes = require('bytes') -var createError = require('http-errors') -var iconv = require('iconv-lite') -var unpipe = require('unpipe') - -/** - * Module exports. - * @public - */ - -module.exports = getRawBody - -/** - * Module variables. - * @private - */ - -var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: / - -/** - * Get the decoder for a given encoding. - * - * @param {string} encoding - * @private - */ - -function getDecoder (encoding) { - if (!encoding) return null - - try { - return iconv.getDecoder(encoding) - } catch (e) { - // error getting decoder - if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e - - // the encoding was not found - throw createError(415, 'specified encoding unsupported', { - encoding: encoding, - type: 'encoding.unsupported' - }) - } -} - -/** - * Get the raw body of a stream (typically HTTP). - * - * @param {object} stream - * @param {object|string|function} [options] - * @param {function} [callback] - * @public - */ - -function getRawBody (stream, options, callback) { - var done = callback - var opts = options || {} - - // light validation - if (stream === undefined) { - throw new TypeError('argument stream is required') - } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') { - throw new TypeError('argument stream must be a stream') - } - - if (options === true || typeof options === 'string') { - // short cut for encoding - opts = { - encoding: options - } - } - - if (typeof options === 'function') { - done = options - opts = {} - } - - // validate callback is a function, if provided - if (done !== undefined && typeof done !== 'function') { - throw new TypeError('argument callback must be a function') - } - - // require the callback without promises - if (!done && !global.Promise) { - throw new TypeError('argument callback is required') - } - - // get encoding - var encoding = opts.encoding !== true - ? opts.encoding - : 'utf-8' - - // convert the limit to an integer - var limit = bytes.parse(opts.limit) - - // convert the expected length to an integer - var length = opts.length != null && !isNaN(opts.length) - ? parseInt(opts.length, 10) - : null - - if (done) { - // classic callback style - return readStream(stream, encoding, length, limit, wrap(done)) - } - - return new Promise(function executor (resolve, reject) { - readStream(stream, encoding, length, limit, function onRead (err, buf) { - if (err) return reject(err) - resolve(buf) - }) - }) -} - -/** - * Halt a stream. - * - * @param {Object} stream - * @private - */ - -function halt (stream) { - // unpipe everything from the stream - unpipe(stream) - - // pause stream - if (typeof stream.pause === 'function') { - stream.pause() - } -} - -/** - * Read the data from the stream. - * - * @param {object} stream - * @param {string} encoding - * @param {number} length - * @param {number} limit - * @param {function} callback - * @public - */ - -function readStream (stream, encoding, length, limit, callback) { - var complete = false - var sync = true - - // check the length and limit options. - // note: we intentionally leave the stream paused, - // so users should handle the stream themselves. - if (limit !== null && length !== null && length > limit) { - return done(createError(413, 'request entity too large', { - expected: length, - length: length, - limit: limit, - type: 'entity.too.large' - })) - } - - // streams1: assert request encoding is buffer. - // streams2+: assert the stream encoding is buffer. - // stream._decoder: streams1 - // state.encoding: streams2 - // state.decoder: streams2, specifically < 0.10.6 - var state = stream._readableState - if (stream._decoder || (state && (state.encoding || state.decoder))) { - // developer error - return done(createError(500, 'stream encoding should not be set', { - type: 'stream.encoding.set' - })) - } - - if (typeof stream.readable !== 'undefined' && !stream.readable) { - return done(createError(500, 'stream is not readable', { - type: 'stream.not.readable' - })) - } - - var received = 0 - var decoder - - try { - decoder = getDecoder(encoding) - } catch (err) { - return done(err) - } - - var buffer = decoder - ? '' - : [] - - // attach listeners - stream.on('aborted', onAborted) - stream.on('close', cleanup) - stream.on('data', onData) - stream.on('end', onEnd) - stream.on('error', onEnd) - - // mark sync section complete - sync = false - - function done () { - var args = new Array(arguments.length) - - // copy arguments - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - - // mark complete - complete = true - - if (sync) { - process.nextTick(invokeCallback) - } else { - invokeCallback() - } - - function invokeCallback () { - cleanup() - - if (args[0]) { - // halt the stream on error - halt(stream) - } - - callback.apply(null, args) - } - } - - function onAborted () { - if (complete) return - - done(createError(400, 'request aborted', { - code: 'ECONNABORTED', - expected: length, - length: length, - received: received, - type: 'request.aborted' - })) - } - - function onData (chunk) { - if (complete) return - - received += chunk.length - - if (limit !== null && received > limit) { - done(createError(413, 'request entity too large', { - limit: limit, - received: received, - type: 'entity.too.large' - })) - } else if (decoder) { - buffer += decoder.write(chunk) - } else { - buffer.push(chunk) - } - } - - function onEnd (err) { - if (complete) return - if (err) return done(err) - - if (length !== null && received !== length) { - done(createError(400, 'request size did not match content length', { - expected: length, - length: length, - received: received, - type: 'request.size.invalid' - })) - } else { - var string = decoder - ? buffer + (decoder.end() || '') - : Buffer.concat(buffer) - done(null, string) - } - } - - function cleanup () { - buffer = null - - stream.removeListener('aborted', onAborted) - stream.removeListener('data', onData) - stream.removeListener('end', onEnd) - stream.removeListener('error', onEnd) - stream.removeListener('close', cleanup) - } -} - -/** - * Try to require async_hooks - * @private - */ - -function tryRequireAsyncHooks () { - try { - return require('async_hooks') - } catch (e) { - return {} - } -} - -/** - * Wrap function with async resource, if possible. - * AsyncResource.bind static method backported. - * @private - */ - -function wrap (fn) { - var res - - // create anonymous resource - if (asyncHooks.AsyncResource) { - res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn') - } - - // incompatible node.js - if (!res || !res.runInAsyncScope) { - return fn - } - - // return bound function - return res.runInAsyncScope.bind(res, fn, null) -} diff --git a/mcp/node_modules/body-parser/node_modules/raw-body/package.json b/mcp/node_modules/body-parser/node_modules/raw-body/package.json deleted file mode 100644 index aabb1c3..0000000 --- a/mcp/node_modules/body-parser/node_modules/raw-body/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "raw-body", - "description": "Get and validate the raw body of a readable stream.", - "version": "2.5.2", - "author": "Jonathan Ong (http://jongleberry.com)", - "contributors": [ - "Douglas Christopher Wilson ", - "Raynos " - ], - "license": "MIT", - "repository": "stream-utils/raw-body", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "devDependencies": { - "bluebird": "3.7.2", - "eslint": "8.34.0", - "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-standard": "4.1.0", - "mocha": "10.2.0", - "nyc": "15.1.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "SECURITY.md", - "index.d.ts", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha --trace-deprecation --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/mcp/node_modules/body-parser/package.json b/mcp/node_modules/body-parser/package.json index 3c9926f..e7f763b 100644 --- a/mcp/node_modules/body-parser/package.json +++ b/mcp/node_modules/body-parser/package.json @@ -1,7 +1,7 @@ { "name": "body-parser", "description": "Node.js body parsing middleware", - "version": "1.20.3", + "version": "2.2.0", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -9,18 +9,15 @@ "license": "MIT", "repository": "expressjs/body-parser", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" }, "devDependencies": { "eslint": "8.34.0", @@ -30,27 +27,23 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", "eslint-plugin-standard": "4.1.0", - "methods": "1.1.2", - "mocha": "10.2.0", - "nyc": "15.1.0", - "safe-buffer": "5.2.1", - "supertest": "6.3.3" + "mocha": "^11.1.0", + "nyc": "^17.1.0", + "supertest": "^7.0.0" }, "files": [ "lib/", "LICENSE", "HISTORY.md", - "SECURITY.md", "index.js" ], "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=18" }, "scripts": { "lint": "eslint .", - "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test": "mocha --reporter spec --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", "test-cov": "nyc --reporter=html --reporter=text npm test" } } diff --git a/mcp/node_modules/content-disposition/HISTORY.md b/mcp/node_modules/content-disposition/HISTORY.md index 488effa..ff0b68b 100644 --- a/mcp/node_modules/content-disposition/HISTORY.md +++ b/mcp/node_modules/content-disposition/HISTORY.md @@ -1,3 +1,9 @@ +1.0.0 / 2024-08-31 +================== + + * drop node <18 + * allow utf8 as alias for utf-8 + 0.5.4 / 2021-12-10 ================== diff --git a/mcp/node_modules/content-disposition/index.js b/mcp/node_modules/content-disposition/index.js index ecec899..44f1d51 100644 --- a/mcp/node_modules/content-disposition/index.js +++ b/mcp/node_modules/content-disposition/index.js @@ -243,7 +243,7 @@ function format (obj) { for (var i = 0; i < params.length; i++) { param = params[i] - var val = param.substr(-1) === '*' + var val = param.slice(-1) === '*' ? ustring(parameters[param]) : qstring(parameters[param]) @@ -281,6 +281,7 @@ function decodefield (str) { value = getlatin1(binary) break case 'utf-8': + case 'utf8': value = Buffer.from(binary, 'binary').toString('utf8') break default: @@ -332,7 +333,7 @@ function parse (string) { var value // calculate index to start at - index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ';' + index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ';' ? index - 1 : index @@ -369,7 +370,7 @@ function parse (string) { if (value[0] === '"') { // remove quotes and escapes value = value - .substr(1, value.length - 2) + .slice(1, -1) .replace(QESC_REGEXP, '$1') } diff --git a/mcp/node_modules/content-disposition/package.json b/mcp/node_modules/content-disposition/package.json index 43c70ce..5cea50b 100644 --- a/mcp/node_modules/content-disposition/package.json +++ b/mcp/node_modules/content-disposition/package.json @@ -1,7 +1,7 @@ { "name": "content-disposition", "description": "Create and parse Content-Disposition header", - "version": "0.5.4", + "version": "1.0.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "keywords": [ @@ -23,8 +23,8 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", "eslint-plugin-standard": "4.1.0", - "istanbul": "0.4.5", - "mocha": "9.1.3" + "mocha": "^9.2.2", + "nyc": "15.1.0" }, "files": [ "LICENSE", @@ -38,7 +38,7 @@ "scripts": { "lint": "eslint .", "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" } } diff --git a/mcp/node_modules/cookie-signature/.npmignore b/mcp/node_modules/cookie-signature/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/mcp/node_modules/cookie-signature/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/mcp/node_modules/cookie-signature/History.md b/mcp/node_modules/cookie-signature/History.md index 78513cc..479211a 100644 --- a/mcp/node_modules/cookie-signature/History.md +++ b/mcp/node_modules/cookie-signature/History.md @@ -1,3 +1,35 @@ +1.2.2 / 2024-10-29 +================== + +* various metadata/documentation tweaks (incl. #51) + + +1.2.1 / 2023-02-27 +================== + +* update annotations for allowed secret key types (#44, thanks @jyasskin!) + + +1.2.0 / 2022-02-17 +================== + +* allow buffer and other node-supported types as key (#33) +* be pickier about extra content after signed portion (#40) +* some internal code clarity/cleanup improvements (#26) + + +1.1.0 / 2018-01-18 +================== + +* switch to built-in `crypto.timingSafeEqual` for validation instead of previous double-hash method (thank you @jodevsa!) + + +1.0.7 / 2023-04-12 +================== + +Later release for older node.js versions. See the [v1.0.x branch notes](https://github.com/tj/node-cookie-signature/blob/v1.0.x/History.md#107--2023-04-12). + + 1.0.6 / 2015-02-03 ================== diff --git a/mcp/node_modules/cookie-signature/Readme.md b/mcp/node_modules/cookie-signature/Readme.md index 2559e84..369af15 100644 --- a/mcp/node_modules/cookie-signature/Readme.md +++ b/mcp/node_modules/cookie-signature/Readme.md @@ -16,27 +16,8 @@ cookie.unsign(val, 'tobiiscool').should.equal('hello'); cookie.unsign(val, 'luna').should.be.false; ``` -## License +## License -(The MIT License) +MIT. -Copyright (c) 2012 LearnBoost <tj@learnboost.com> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +See LICENSE file for details. diff --git a/mcp/node_modules/cookie-signature/index.js b/mcp/node_modules/cookie-signature/index.js index b8c9463..3fbbddb 100644 --- a/mcp/node_modules/cookie-signature/index.js +++ b/mcp/node_modules/cookie-signature/index.js @@ -8,14 +8,14 @@ var crypto = require('crypto'); * Sign the given `val` with `secret`. * * @param {String} val - * @param {String} secret + * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret * @return {String} * @api private */ exports.sign = function(val, secret){ if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); - if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); + if (null == secret) throw new TypeError("Secret key must be provided."); return val + '.' + crypto .createHmac('sha256', secret) .update(val) @@ -24,28 +24,24 @@ exports.sign = function(val, secret){ }; /** - * Unsign and decode the given `val` with `secret`, + * Unsign and decode the given `input` with `secret`, * returning `false` if the signature is invalid. * - * @param {String} val - * @param {String} secret + * @param {String} input + * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret * @return {String|Boolean} * @api private */ -exports.unsign = function(val, secret){ - if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided."); - if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); - var str = val.slice(0, val.lastIndexOf('.')) - , mac = exports.sign(str, secret); - - return sha1(mac) == sha1(val) ? str : false; +exports.unsign = function(input, secret){ + if ('string' != typeof input) throw new TypeError("Signed cookie string must be provided."); + if (null == secret) throw new TypeError("Secret key must be provided."); + var tentativeValue = input.slice(0, input.lastIndexOf('.')), + expectedInput = exports.sign(tentativeValue, secret), + expectedBuffer = Buffer.from(expectedInput), + inputBuffer = Buffer.from(input); + return ( + expectedBuffer.length === inputBuffer.length && + crypto.timingSafeEqual(expectedBuffer, inputBuffer) + ) ? tentativeValue : false; }; - -/** - * Private - */ - -function sha1(str){ - return crypto.createHash('sha1').update(str).digest('hex'); -} diff --git a/mcp/node_modules/cookie-signature/package.json b/mcp/node_modules/cookie-signature/package.json index 29c4498..a160040 100644 --- a/mcp/node_modules/cookie-signature/package.json +++ b/mcp/node_modules/cookie-signature/package.json @@ -1,18 +1,24 @@ { "name": "cookie-signature", - "version": "1.0.6", + "version": "1.2.2", + "main": "index.js", "description": "Sign and unsign cookies", "keywords": ["cookie", "sign", "unsign"], "author": "TJ Holowaychuk ", "license": "MIT", - "repository": { "type": "git", "url": "https://github.com/visionmedia/node-cookie-signature.git"}, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/node-cookie-signature.git" + }, "dependencies": {}, + "engines": { + "node": ">=6.6.0" + }, "devDependencies": { "mocha": "*", "should": "*" }, "scripts": { "test": "mocha --require should --reporter spec" - }, - "main": "index" + } } diff --git a/mcp/node_modules/debug/.coveralls.yml b/mcp/node_modules/debug/.coveralls.yml deleted file mode 100644 index 20a7068..0000000 --- a/mcp/node_modules/debug/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/mcp/node_modules/debug/.eslintrc b/mcp/node_modules/debug/.eslintrc deleted file mode 100644 index 8a37ae2..0000000 --- a/mcp/node_modules/debug/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "rules": { - "no-console": 0, - "no-empty": [1, { "allowEmptyCatch": true }] - }, - "extends": "eslint:recommended" -} diff --git a/mcp/node_modules/debug/.npmignore b/mcp/node_modules/debug/.npmignore deleted file mode 100644 index 5f60eec..0000000 --- a/mcp/node_modules/debug/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -support -test -examples -example -*.sock -dist -yarn.lock -coverage -bower.json diff --git a/mcp/node_modules/debug/.travis.yml b/mcp/node_modules/debug/.travis.yml deleted file mode 100644 index 6c6090c..0000000 --- a/mcp/node_modules/debug/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ - -language: node_js -node_js: - - "6" - - "5" - - "4" - -install: - - make node_modules - -script: - - make lint - - make test - - make coveralls diff --git a/mcp/node_modules/debug/CHANGELOG.md b/mcp/node_modules/debug/CHANGELOG.md deleted file mode 100644 index eadaa18..0000000 --- a/mcp/node_modules/debug/CHANGELOG.md +++ /dev/null @@ -1,362 +0,0 @@ - -2.6.9 / 2017-09-22 -================== - - * remove ReDoS regexp in %o formatter (#504) - -2.6.8 / 2017-05-18 -================== - - * Fix: Check for undefined on browser globals (#462, @marbemac) - -2.6.7 / 2017-05-16 -================== - - * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) - * Fix: Inline extend function in node implementation (#452, @dougwilson) - * Docs: Fix typo (#455, @msasad) - -2.6.5 / 2017-04-27 -================== - - * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) - * Misc: clean up browser reference checks (#447, @thebigredgeek) - * Misc: add npm-debug.log to .gitignore (@thebigredgeek) - - -2.6.4 / 2017-04-20 -================== - - * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) - * Chore: ignore bower.json in npm installations. (#437, @joaovieira) - * Misc: update "ms" to v0.7.3 (@tootallnate) - -2.6.3 / 2017-03-13 -================== - - * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) - * Docs: Changelog fix (@thebigredgeek) - -2.6.2 / 2017-03-10 -================== - - * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) - * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) - * Docs: Add Slackin invite badge (@tootallnate) - -2.6.1 / 2017-02-10 -================== - - * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error - * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) - * Fix: IE8 "Expected identifier" error (#414, @vgoma) - * Fix: Namespaces would not disable once enabled (#409, @musikov) - -2.6.0 / 2016-12-28 -================== - - * Fix: added better null pointer checks for browser useColors (@thebigredgeek) - * Improvement: removed explicit `window.debug` export (#404, @tootallnate) - * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) - -2.5.2 / 2016-12-25 -================== - - * Fix: reference error on window within webworkers (#393, @KlausTrainer) - * Docs: fixed README typo (#391, @lurch) - * Docs: added notice about v3 api discussion (@thebigredgeek) - -2.5.1 / 2016-12-20 -================== - - * Fix: babel-core compatibility - -2.5.0 / 2016-12-20 -================== - - * Fix: wrong reference in bower file (@thebigredgeek) - * Fix: webworker compatibility (@thebigredgeek) - * Fix: output formatting issue (#388, @kribblo) - * Fix: babel-loader compatibility (#383, @escwald) - * Misc: removed built asset from repo and publications (@thebigredgeek) - * Misc: moved source files to /src (#378, @yamikuronue) - * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) - * Test: coveralls integration (#378, @yamikuronue) - * Docs: simplified language in the opening paragraph (#373, @yamikuronue) - -2.4.5 / 2016-12-17 -================== - - * Fix: `navigator` undefined in Rhino (#376, @jochenberger) - * Fix: custom log function (#379, @hsiliev) - * Improvement: bit of cleanup + linting fixes (@thebigredgeek) - * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) - * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) - -2.4.4 / 2016-12-14 -================== - - * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) - -2.4.3 / 2016-12-14 -================== - - * Fix: navigation.userAgent error for react native (#364, @escwald) - -2.4.2 / 2016-12-14 -================== - - * Fix: browser colors (#367, @tootallnate) - * Misc: travis ci integration (@thebigredgeek) - * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) - -2.4.1 / 2016-12-13 -================== - - * Fix: typo that broke the package (#356) - -2.4.0 / 2016-12-13 -================== - - * Fix: bower.json references unbuilt src entry point (#342, @justmatt) - * Fix: revert "handle regex special characters" (@tootallnate) - * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) - * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) - * Improvement: allow colors in workers (#335, @botverse) - * Improvement: use same color for same namespace. (#338, @lchenay) - -2.3.3 / 2016-11-09 -================== - - * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) - * Fix: Returning `localStorage` saved values (#331, Levi Thomason) - * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) - -2.3.2 / 2016-11-09 -================== - - * Fix: be super-safe in index.js as well (@TooTallNate) - * Fix: should check whether process exists (Tom Newby) - -2.3.1 / 2016-11-09 -================== - - * Fix: Added electron compatibility (#324, @paulcbetts) - * Improvement: Added performance optimizations (@tootallnate) - * Readme: Corrected PowerShell environment variable example (#252, @gimre) - * Misc: Removed yarn lock file from source control (#321, @fengmk2) - -2.3.0 / 2016-11-07 -================== - - * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) - * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) - * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) - * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) - * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) - * Package: Update "ms" to 0.7.2 (#315, @DevSide) - * Package: removed superfluous version property from bower.json (#207 @kkirsche) - * Readme: fix USE_COLORS to DEBUG_COLORS - * Readme: Doc fixes for format string sugar (#269, @mlucool) - * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) - * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) - * Readme: better docs for browser support (#224, @matthewmueller) - * Tooling: Added yarn integration for development (#317, @thebigredgeek) - * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) - * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) - * Misc: Updated contributors (@thebigredgeek) - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/mcp/node_modules/debug/LICENSE b/mcp/node_modules/debug/LICENSE index 658c933..1a9820e 100644 --- a/mcp/node_modules/debug/LICENSE +++ b/mcp/node_modules/debug/LICENSE @@ -1,19 +1,20 @@ (The MIT License) -Copyright (c) 2014 TJ Holowaychuk +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/debug/Makefile b/mcp/node_modules/debug/Makefile deleted file mode 100644 index 584da8b..0000000 --- a/mcp/node_modules/debug/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# Path -PATH := node_modules/.bin:$(PATH) -SHELL := /bin/bash - -# applications -NODE ?= $(shell which node) -YARN ?= $(shell which yarn) -PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -.FORCE: - -install: node_modules - -node_modules: package.json - @NODE_ENV= $(PKG) install - @touch node_modules - -lint: .FORCE - eslint browser.js debug.js index.js node.js - -test-node: .FORCE - istanbul cover node_modules/mocha/bin/_mocha -- test/**.js - -test-browser: .FORCE - mkdir -p dist - - @$(BROWSERIFY) \ - --standalone debug \ - . > dist/debug.js - - karma start --single-run - rimraf dist - -test: .FORCE - concurrently \ - "make test-node" \ - "make test-browser" - -coveralls: - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - -.PHONY: all install clean distclean diff --git a/mcp/node_modules/debug/README.md b/mcp/node_modules/debug/README.md index f67be6b..9ebdfbf 100644 --- a/mcp/node_modules/debug/README.md +++ b/mcp/node_modules/debug/README.md @@ -1,12 +1,11 @@ # debug -[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + - -A tiny node.js debugging utility modelled after node core's debugging technique. - -**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** +A tiny JavaScript debugging utility modelled after Node.js core's debugging +technique. Works in Node.js and web browsers. ## Installation @@ -18,7 +17,7 @@ $ npm install debug `debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. -Example _app.js_: +Example [_app.js_](./examples/node/app.js): ```js var debug = require('debug')('http') @@ -27,7 +26,7 @@ var debug = require('debug')('http') // fake app -debug('booting %s', name); +debug('booting %o', name); http.createServer(function(req, res){ debug(req.method + ' ' + req.url); @@ -41,81 +40,148 @@ http.createServer(function(req, res){ require('./worker'); ``` -Example _worker.js_: +Example [_worker.js_](./examples/node/worker.js): ```js -var debug = require('debug')('worker'); +var a = require('debug')('worker:a') + , b = require('debug')('worker:b'); -setInterval(function(){ - debug('doing some work'); -}, 1000); +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); ``` - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: +The `DEBUG` environment variable is then used to enable these based on space or +comma-delimited names. - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) +Here are some examples: - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) +screen shot 2017-08-08 at 12 53 04 pm +screen shot 2017-08-08 at 12 53 38 pm +screen shot 2017-08-08 at 12 53 25 pm -#### Windows note +#### Windows command prompt notes - On Windows the environment variable is set using the `set` command. +##### CMD - ```cmd - set DEBUG=*,-not_this - ``` +On Windows the environment variable is set using the `set` command. - Note that PowerShell uses different syntax to set environment variables. +```cmd +set DEBUG=*,-not_this +``` - ```cmd - $env:DEBUG = "*,-not_this" - ``` +Example: + +```cmd +set DEBUG=* & node app.js +``` + +##### PowerShell (VS Code default) + +PowerShell uses different syntax to set environment variables. + +```cmd +$env:DEBUG = "*,-not_this" +``` + +Example: + +```cmd +$env:DEBUG='app';node app.js +``` Then, run the program to be debugged as usual. +npm script example: +```js + "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", +``` + +## Namespace Colors + +Every debug instance has a color generated for it based on its namespace name. +This helps when visually parsing the debug output to identify which debug instance +a debug line belongs to. + +#### Node.js + +In Node.js, colors are enabled when stderr is a TTY. You also _should_ install +the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, +otherwise debug will only use a small handful of basic colors. + + + +#### Web Browser + +Colors are also enabled on "Web Inspectors" that understand the `%c` formatting +option. These are WebKit web inspectors, Firefox ([since version +31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) +and the Firebug plugin for Firefox (any version). + + + + ## Millisecond diff - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. +When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) + - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: +When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: + + - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) ## Conventions - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". +If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. ## Wildcards - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. +The `*` character may be used as a wildcard. Suppose for example your library has +debuggers named "connect:bodyParser", "connect:compress", "connect:session", +instead of listing all three with +`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do +`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". +You can also exclude specific debuggers by prefixing them with a "-" character. +For example, `DEBUG=*,-connect:*` would include all debuggers except those +starting with "connect:". ## Environment Variables - When running through Node.js, you can set a few environment variables that will - change the behavior of the debug logging: +When running through Node.js, you can set a few environment variables that will +change the behavior of the debug logging: | Name | Purpose | |-----------|-------------------------------------------------| | `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | | `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_DEPTH` | Object inspection depth. | | `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - __Note:__ The environment variables beginning with `DEBUG_` end up being - converted into an Options object that gets used with `%o`/`%O` formatters. - See the Node.js documentation for - [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) - for the complete list. +__Note:__ The environment variables beginning with `DEBUG_` end up being +converted into an Options object that gets used with `%o`/`%O` formatters. +See the Node.js documentation for +[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) +for the complete list. ## Formatters - - Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: +Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. +Below are the officially supported formatters: | Formatter | Representation | |-----------|----------------| @@ -126,9 +192,12 @@ Then, run the program to be debugged as usual. | `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | | `%%` | Single percent sign ('%'). This does not consume an argument. | + ### Custom formatters - You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: +You can add custom formatters by extending the `debug.formatters` object. +For example, if you wanted to add support for rendering a Buffer as hex with +`%h`, you could do something like: ```js const createDebug = require('debug') @@ -142,14 +211,16 @@ debug('this is hex: %h', new Buffer('hello world')) // foo this is hex: 68656c6c6f20776f726c6421 +0ms ``` -## Browser support - You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), - or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), - if you don't want to build it yourself. - Debug's enable state is currently persisted by `localStorage`. - Consider the situation shown below where you have `worker:a` and `worker:b`, - and wish to debug both. You can enable this using `localStorage.debug`: +## Browser Support + +You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), +or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), +if you don't want to build it yourself. + +Debug's enable state is currently persisted by `localStorage`. +Consider the situation shown below where you have `worker:a` and `worker:b`, +and wish to debug both. You can enable this using `localStorage.debug`: ```js localStorage.debug = 'worker:*' @@ -170,23 +241,15 @@ setInterval(function(){ }, 1200); ``` -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) +In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. + ## Output streams By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: -Example _stdout.js_: +Example [_stdout.js_](./examples/node/stdout.js): ```js var debug = require('debug'); @@ -208,13 +271,118 @@ error('now goes to stdout via console.info'); log('still goes to stdout, but via console.info now'); ``` +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + +## Set dynamically + +You can also enable debug dynamically by calling the `enable()` method : + +```js +let debug = require('debug'); + +console.log(1, debug.enabled('test')); + +debug.enable('test'); +console.log(2, debug.enabled('test')); + +debug.disable(); +console.log(3, debug.enabled('test')); + +``` + +print : +``` +1 false +2 true +3 false +``` + +Usage : +`enable(namespaces)` +`namespaces` can include modes separated by a colon and wildcards. + +Note that calling `enable()` completely overrides previously set DEBUG variable : + +``` +$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' +=> false +``` + +`disable()` + +Will disable all namespaces. The functions returns the namespaces currently +enabled (and skipped). This can be useful if you want to disable debugging +temporarily without knowing what was enabled to begin with. + +For example: + +```js +let debug = require('debug'); +debug.enable('foo:*,-foo:bar'); +let namespaces = debug.disable(); +debug.enable(namespaces); +``` + +Note: There is no guarantee that the string will be identical to the initial +enable string, but semantically they will be identical. + +## Checking whether a debug target is enabled + +After you've created a debug instance, you can determine whether or not it is +enabled by checking the `enabled` property: + +```javascript +const debug = require('debug')('http'); + +if (debug.enabled) { + // do stuff... +} +``` + +You can also manually toggle this property to force the debug instance to be +enabled or disabled. + +## Usage in child processes + +Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. +For example: + +```javascript +worker = fork(WORKER_WRAP_PATH, [workerPath], { + stdio: [ + /* stdin: */ 0, + /* stdout: */ 'pipe', + /* stderr: */ 'pipe', + 'ipc', + ], + env: Object.assign({}, process.env, { + DEBUG_COLORS: 1 // without this settings, colors won't be shown + }), +}); + +worker.stderr.pipe(process.stderr, { end: false }); +``` + ## Authors - TJ Holowaychuk - Nathan Rajlich - Andrew Rhyne - + - Josh Junon + ## Backers Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] @@ -290,7 +458,8 @@ Become a sponsor and get your logo on our README on Github with a link to your s (The MIT License) -Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/mcp/node_modules/debug/component.json b/mcp/node_modules/debug/component.json deleted file mode 100644 index 9de2641..0000000 --- a/mcp/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.6.9", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "src/browser.js", - "scripts": [ - "src/browser.js", - "src/debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/mcp/node_modules/debug/karma.conf.js b/mcp/node_modules/debug/karma.conf.js deleted file mode 100644 index 103a82d..0000000 --- a/mcp/node_modules/debug/karma.conf.js +++ /dev/null @@ -1,70 +0,0 @@ -// Karma configuration -// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - - // list of files / patterns to load in the browser - files: [ - 'dist/debug.js', - 'test/*spec.js' - ], - - - // list of files to exclude - exclude: [ - 'src/node.js' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/mcp/node_modules/debug/node.js b/mcp/node_modules/debug/node.js deleted file mode 100644 index 7fc36fe..0000000 --- a/mcp/node_modules/debug/node.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./src/node'); diff --git a/mcp/node_modules/debug/package.json b/mcp/node_modules/debug/package.json index dc787ba..afc2f8b 100644 --- a/mcp/node_modules/debug/package.json +++ b/mcp/node_modules/debug/package.json @@ -1,49 +1,64 @@ { "name": "debug", - "version": "2.6.9", + "version": "4.4.1", "repository": { "type": "git", - "url": "git://github.com/visionmedia/debug.git" + "url": "git://github.com/debug-js/debug.git" }, - "description": "small debugging utility", + "description": "Lightweight debugging utility for Node.js and the browser", "keywords": [ "debug", "log", "debugger" ], - "author": "TJ Holowaychuk ", + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon (https://github.com/qix-)", "contributors": [ + "TJ Holowaychuk ", "Nathan Rajlich (http://n8.io)", "Andrew Rhyne " ], "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "mocha test.js test.node.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" }, "devDependencies": { - "browserify": "9.0.3", - "chai": "^3.5.0", - "concurrently": "^3.1.0", - "coveralls": "^2.11.15", - "eslint": "^3.12.1", - "istanbul": "^0.4.5", - "karma": "^1.3.0", - "karma-chai": "^0.1.0", + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-sinon": "^1.0.5", - "mocha": "^3.2.0", + "mocha": "^5.2.0", "mocha-lcov-reporter": "^1.2.0", - "rimraf": "^2.5.4", - "sinon": "^1.17.6", - "sinon-chai": "^2.8.0" + "sinon": "^14.0.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } }, "main": "./src/index.js", "browser": "./src/browser.js", - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" + "engines": { + "node": ">=6.0" + }, + "xo": { + "rules": { + "import/extensions": "off" } } } diff --git a/mcp/node_modules/debug/src/browser.js b/mcp/node_modules/debug/src/browser.js index 7106924..5993451 100644 --- a/mcp/node_modules/debug/src/browser.js +++ b/mcp/node_modules/debug/src/browser.js @@ -1,31 +1,106 @@ +/* eslint-env browser */ + /** * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. */ -exports = module.exports = require('./debug'); -exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); /** * Colors. */ exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' ]; /** @@ -36,39 +111,35 @@ exports.colors = [ * TODO: add a `localStorage` variable to explicitly enable/disable colors */ +// eslint-disable-next-line complexity function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; - - /** * Colorize log arguments if enabled. * @@ -76,52 +147,49 @@ exports.formatters.j = function(v) { */ function formatArgs(args) { - var useColors = this.useColors; + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); + if (!this.useColors) { + return; + } - if (!useColors) return; + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); + args.splice(lastC, 0, c); } /** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. * * @api public */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} +exports.log = console.debug || console.log || (() => {}); /** * Save `namespaces`. @@ -129,15 +197,17 @@ function log() { * @param {String} namespaces * @api private */ - function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } } /** @@ -146,27 +216,23 @@ function save(namespaces) { * @return {String} returns the previously persisted debug modes * @api private */ - function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} + let r; + try { + r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } - return r; + return r; } -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - /** * Localstorage attempts to return the localstorage. * @@ -179,7 +245,28 @@ exports.enable(load()); */ function localstorage() { - try { - return window.localStorage; - } catch (e) {} + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } } + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/mcp/node_modules/debug/src/debug.js b/mcp/node_modules/debug/src/debug.js deleted file mode 100644 index 6a5e3fc..0000000 --- a/mcp/node_modules/debug/src/debug.js +++ /dev/null @@ -1,202 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - -exports.formatters = {}; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ - -function selectColor(namespace) { - var hash = 0, i; - - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return exports.colors[Math.abs(hash) % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function createDebug(namespace) { - - function debug() { - // disabled? - if (!debug.enabled) return; - - var self = debug; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); - - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); - - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } - - return debug; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - exports.names = []; - exports.skips = []; - - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/mcp/node_modules/debug/src/index.js b/mcp/node_modules/debug/src/index.js index e12cf4d..bf4c57f 100644 --- a/mcp/node_modules/debug/src/index.js +++ b/mcp/node_modules/debug/src/index.js @@ -1,10 +1,10 @@ /** - * Detect Electron renderer process, which is node, but we should + * Detect Electron renderer / nwjs process, which is node, but we should * treat as a browser. */ -if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = require('./browser.js'); +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); } else { - module.exports = require('./node.js'); + module.exports = require('./node.js'); } diff --git a/mcp/node_modules/debug/src/inspector-log.js b/mcp/node_modules/debug/src/inspector-log.js deleted file mode 100644 index 60ea6c0..0000000 --- a/mcp/node_modules/debug/src/inspector-log.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = inspectorLog; - -// black hole -const nullStream = new (require('stream').Writable)(); -nullStream._write = () => {}; - -/** - * Outputs a `console.log()` to the Node.js Inspector console *only*. - */ -function inspectorLog() { - const stdout = console._stdout; - console._stdout = nullStream; - console.log.apply(console, arguments); - console._stdout = stdout; -} diff --git a/mcp/node_modules/debug/src/node.js b/mcp/node_modules/debug/src/node.js index b15109c..715560a 100644 --- a/mcp/node_modules/debug/src/node.js +++ b/mcp/node_modules/debug/src/node.js @@ -2,22 +2,23 @@ * Module dependencies. */ -var tty = require('tty'); -var util = require('util'); +const tty = require('tty'); +const util = require('util'); /** * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. */ -exports = module.exports = require('./debug'); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); /** * Colors. @@ -25,80 +26,138 @@ exports.useColors = useColors; exports.colors = [6, 2, 3, 4, 5, 1]; +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + /** * Build up the default `inspectOpts` object from the environment variables. * * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js */ -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } - obj[prop] = val; - return obj; + obj[prop] = val; + return obj; }, {}); -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; - -if (1 !== fd && 2 !== fd) { - util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() -} - -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - /** * Is stdout a TTY? Colored output is enabled when `true`. */ function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(fd); + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); } -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n').map(function(str) { - return str.trim() - }).join(' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - /** * Adds ANSI color escape codes if enabled. * @@ -106,27 +165,33 @@ exports.formatters.O = function(v) { */ function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; + const {namespace: name, useColors} = this; - if (useColors) { - var c = this.color; - var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; } /** - * Invokes `util.format()` with the specified arguments and writes to `stream`. + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. */ -function log() { - return stream.write(util.format.apply(util, arguments) + '\n'); +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); } /** @@ -135,15 +200,14 @@ function log() { * @param {String} namespaces * @api private */ - function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } } /** @@ -154,75 +218,7 @@ function save(namespaces) { */ function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; + return process.env.DEBUG; } /** @@ -232,17 +228,36 @@ function createWritableStdioStream (fd) { * differently for a particular `debug` instance. */ -function init (debug) { - debug.inspectOpts = {}; +function init(debug) { + debug.inspectOpts = {}; - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } } +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + /** - * Enable namespaces listed in `process.env.DEBUG` initially. + * Map %o to `util.inspect()`, all on a single line. */ -exports.enable(load()); +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/mcp/node_modules/destroy/LICENSE b/mcp/node_modules/destroy/LICENSE deleted file mode 100644 index 0e2c35f..0000000 --- a/mcp/node_modules/destroy/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com -Copyright (c) 2015-2022 Douglas Christopher Wilson doug@somethingdoug.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/mcp/node_modules/destroy/README.md b/mcp/node_modules/destroy/README.md deleted file mode 100644 index e7701ae..0000000 --- a/mcp/node_modules/destroy/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# destroy - -[![NPM version][npm-image]][npm-url] -[![Build Status][github-actions-ci-image]][github-actions-ci-url] -[![Test coverage][coveralls-image]][coveralls-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] - -Destroy a stream. - -This module is meant to ensure a stream gets destroyed, handling different APIs -and Node.js bugs. - -## API - -```js -var destroy = require('destroy') -``` - -### destroy(stream [, suppress]) - -Destroy the given stream, and optionally suppress any future `error` events. - -In most cases, this is identical to a simple `stream.destroy()` call. The rules -are as follows for a given stream: - - 1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()` - and add a listener to the `open` event to call `stream.close()` if it is - fired. This is for a Node.js bug that will leak a file descriptor if - `.destroy()` is called before `open`. - 2. If the `stream` is an instance of a zlib stream, then call `stream.destroy()` - and close the underlying zlib handle if open, otherwise call `stream.close()`. - This is for consistency across Node.js versions and a Node.js bug that will - leak a native zlib handle. - 3. If the `stream` is not an instance of `Stream`, then nothing happens. - 4. If the `stream` has a `.destroy()` method, then call it. - -The function returns the `stream` passed in as the argument. - -## Example - -```js -var destroy = require('destroy') - -var fs = require('fs') -var stream = fs.createReadStream('package.json') - -// ... and later -destroy(stream) -``` - -[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square -[npm-url]: https://npmjs.org/package/destroy -[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square -[github-url]: https://github.com/stream-utils/destroy/tags -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square -[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master -[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square -[license-url]: LICENSE.md -[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square -[downloads-url]: https://npmjs.org/package/destroy -[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/destroy/ci/master?label=ci&style=flat-square -[github-actions-ci-url]: https://github.com/stream-utils/destroy/actions/workflows/ci.yml diff --git a/mcp/node_modules/destroy/index.js b/mcp/node_modules/destroy/index.js deleted file mode 100644 index 7fd5c09..0000000 --- a/mcp/node_modules/destroy/index.js +++ /dev/null @@ -1,209 +0,0 @@ -/*! - * destroy - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var EventEmitter = require('events').EventEmitter -var ReadStream = require('fs').ReadStream -var Stream = require('stream') -var Zlib = require('zlib') - -/** - * Module exports. - * @public - */ - -module.exports = destroy - -/** - * Destroy the given stream, and optionally suppress any future `error` events. - * - * @param {object} stream - * @param {boolean} suppress - * @public - */ - -function destroy (stream, suppress) { - if (isFsReadStream(stream)) { - destroyReadStream(stream) - } else if (isZlibStream(stream)) { - destroyZlibStream(stream) - } else if (hasDestroy(stream)) { - stream.destroy() - } - - if (isEventEmitter(stream) && suppress) { - stream.removeAllListeners('error') - stream.addListener('error', noop) - } - - return stream -} - -/** - * Destroy a ReadStream. - * - * @param {object} stream - * @private - */ - -function destroyReadStream (stream) { - stream.destroy() - - if (typeof stream.close === 'function') { - // node.js core bug work-around - stream.on('open', onOpenClose) - } -} - -/** - * Close a Zlib stream. - * - * Zlib streams below Node.js 4.5.5 have a buggy implementation - * of .close() when zlib encountered an error. - * - * @param {object} stream - * @private - */ - -function closeZlibStream (stream) { - if (stream._hadError === true) { - var prop = stream._binding === null - ? '_binding' - : '_handle' - - stream[prop] = { - close: function () { this[prop] = null } - } - } - - stream.close() -} - -/** - * Destroy a Zlib stream. - * - * Zlib streams don't have a destroy function in Node.js 6. On top of that - * simply calling destroy on a zlib stream in Node.js 8+ will result in a - * memory leak. So until that is fixed, we need to call both close AND destroy. - * - * PR to fix memory leak: https://github.com/nodejs/node/pull/23734 - * - * In Node.js 6+8, it's important that destroy is called before close as the - * stream would otherwise emit the error 'zlib binding closed'. - * - * @param {object} stream - * @private - */ - -function destroyZlibStream (stream) { - if (typeof stream.destroy === 'function') { - // node.js core bug work-around - // istanbul ignore if: node.js 0.8 - if (stream._binding) { - // node.js < 0.10.0 - stream.destroy() - if (stream._processing) { - stream._needDrain = true - stream.once('drain', onDrainClearBinding) - } else { - stream._binding.clear() - } - } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) { - // node.js >= 12, ^11.1.0, ^10.15.1 - stream.destroy() - } else if (stream._destroy && typeof stream.close === 'function') { - // node.js 7, 8 - stream.destroyed = true - stream.close() - } else { - // fallback - // istanbul ignore next - stream.destroy() - } - } else if (typeof stream.close === 'function') { - // node.js < 8 fallback - closeZlibStream(stream) - } -} - -/** - * Determine if stream has destroy. - * @private - */ - -function hasDestroy (stream) { - return stream instanceof Stream && - typeof stream.destroy === 'function' -} - -/** - * Determine if val is EventEmitter. - * @private - */ - -function isEventEmitter (val) { - return val instanceof EventEmitter -} - -/** - * Determine if stream is fs.ReadStream stream. - * @private - */ - -function isFsReadStream (stream) { - return stream instanceof ReadStream -} - -/** - * Determine if stream is Zlib stream. - * @private - */ - -function isZlibStream (stream) { - return stream instanceof Zlib.Gzip || - stream instanceof Zlib.Gunzip || - stream instanceof Zlib.Deflate || - stream instanceof Zlib.DeflateRaw || - stream instanceof Zlib.Inflate || - stream instanceof Zlib.InflateRaw || - stream instanceof Zlib.Unzip -} - -/** - * No-op function. - * @private - */ - -function noop () {} - -/** - * On drain handler to clear binding. - * @private - */ - -// istanbul ignore next: node.js 0.8 -function onDrainClearBinding () { - this._binding.clear() -} - -/** - * On open handler to close stream. - * @private - */ - -function onOpenClose () { - if (typeof this.fd === 'number') { - // actually close down the fd - this.close() - } -} diff --git a/mcp/node_modules/destroy/package.json b/mcp/node_modules/destroy/package.json deleted file mode 100644 index c85e438..0000000 --- a/mcp/node_modules/destroy/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "destroy", - "description": "destroy a stream if possible", - "version": "1.2.0", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com", - "twitter": "https://twitter.com/jongleberry" - }, - "contributors": [ - "Douglas Christopher Wilson " - ], - "license": "MIT", - "repository": "stream-utils/destroy", - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - }, - "files": [ - "index.js", - "LICENSE" - ], - "keywords": [ - "stream", - "streams", - "destroy", - "cleanup", - "leak", - "fd" - ] -} diff --git a/mcp/node_modules/express/History.md b/mcp/node_modules/express/History.md index c234f52..5b6cba5 100644 --- a/mcp/node_modules/express/History.md +++ b/mcp/node_modules/express/History.md @@ -1,25 +1,227 @@ -4.21.2 / 2024-11-06 +5.1.0 / 2025-03-31 +======================== + +* Add support for `Uint8Array` in `res.send()` +* Add support for ETag option in `res.sendFile()` +* Add support for multiple links with the same rel in `res.links()` +* Add funding field to package.json +* perf: use loop for acceptParams +* refactor: prefix built-in node module imports +* deps: remove `setprototypeof` +* deps: remove `safe-buffer` +* deps: remove `utils-merge` +* deps: remove `methods` +* deps: remove `depd` +* deps: `debug@^4.4.0` +* deps: `body-parser@^2.2.0` +* deps: `router@^2.2.0` +* deps: `content-type@^1.0.5` +* deps: `finalhandler@^2.1.0` +* deps: `qs@^6.14.0` +* deps: `server-static@2.2.0` +* deps: `type-is@2.0.1` + +5.0.1 / 2024-10-08 ========== - * deps: path-to-regexp@0.1.12 - - Fix backtracking protection - * deps: path-to-regexp@0.1.11 - - Throws an error on invalid path values +* Update `cookie` semver lock to address [CVE-2024-47764](https://nvd.nist.gov/vuln/detail/CVE-2024-47764) -4.21.1 / 2024-10-08 -========== +5.0.0 / 2024-09-10 +========================= +* remove: + - `path-is-absolute` dependency - use `path.isAbsolute` instead +* breaking: + * `res.status()` accepts only integers, and input must be greater than 99 and less than 1000 + * will throw a `RangeError: Invalid status code: ${code}. Status code must be greater than 99 and less than 1000.` for inputs outside this range + * will throw a `TypeError: Invalid status code: ${code}. Status code must be an integer.` for non integer inputs + * deps: send@1.0.0 + * `res.redirect('back')` and `res.location('back')` is no longer a supported magic string, explicitly use `req.get('Referrer') || '/'`. +* change: + - `res.clearCookie` will ignore user provided `maxAge` and `expires` options +* deps: cookie-signature@^1.2.1 +* deps: debug@4.3.6 +* deps: merge-descriptors@^2.0.0 +* deps: serve-static@^2.1.0 +* deps: qs@6.13.0 +* deps: accepts@^2.0.0 +* deps: mime-types@^3.0.0 + - `application/javascript` => `text/javascript` +* deps: type-is@^2.0.0 +* deps: content-disposition@^1.0.0 +* deps: finalhandler@^2.0.0 +* deps: fresh@^2.0.0 +* deps: body-parser@^2.0.1 +* deps: send@^1.1.0 - * Backported a fix for [CVE-2024-47764](https://nvd.nist.gov/vuln/detail/CVE-2024-47764) +5.0.0-beta.3 / 2024-03-25 +========================= +This incorporates all changes after 4.19.1 up to 4.19.2. -4.21.0 / 2024-09-11 -========== +5.0.0-beta.2 / 2024-03-20 +========================= - * Deprecate `res.location("back")` and `res.redirect("back")` magic string - * deps: serve-static@1.16.2 - * includes send@0.19.0 - * deps: finalhandler@1.3.1 - * deps: qs@6.13.0 +This incorporates all changes after 4.17.2 up to 4.19.1. + +5.0.0-beta.1 / 2022-02-14 +========================= + +This is the first Express 5.0 beta release, based off 4.17.2 and includes +changes from 5.0.0-alpha.8. + + * change: + - Default "query parser" setting to `'simple'` + - Requires Node.js 4+ + - Use `mime-types` for file to content type mapping + * deps: array-flatten@3.0.0 + * deps: body-parser@2.0.0-beta.1 + - `req.body` is no longer always initialized to `{}` + - `urlencoded` parser now defaults `extended` to `false` + - Use `on-finished` to determine when body read + * deps: router@2.0.0-beta.1 + - Add new `?`, `*`, and `+` parameter modifiers + - Internalize private `router.process_params` method + - Matching group expressions are only RegExp syntax + - Named matching groups no longer available by position in `req.params` + - Regular expressions can only be used in a matching group + - Remove `debug` dependency + - Special `*` path segment behavior removed + - deps: array-flatten@3.0.0 + - deps: parseurl@~1.3.3 + - deps: path-to-regexp@3.2.0 + - deps: setprototypeof@1.2.0 + * deps: send@1.0.0-beta.1 + - Change `dotfiles` option default to `'ignore'` + - Remove `hidden` option; use `dotfiles` option instead + - Use `mime-types` for file to content type mapping + - deps: debug@3.1.0 + * deps: serve-static@2.0.0-beta.1 + - Change `dotfiles` option default to `'ignore'` + - Remove `hidden` option; use `dotfiles` option instead + - Use `mime-types` for file to content type mapping + - Remove `express.static.mime` export; use `mime-types` package instead + - deps: send@1.0.0-beta.1 + +5.0.0-alpha.8 / 2020-03-25 +========================== + +This is the eighth Express 5.0 alpha release, based off 4.17.1 and includes +changes from 5.0.0-alpha.7. + +5.0.0-alpha.7 / 2018-10-26 +========================== + +This is the seventh Express 5.0 alpha release, based off 4.16.4 and includes +changes from 5.0.0-alpha.6. + +The major change with this alpha is the basic support for returned, rejected +Promises in the router. + + * remove: + - `path-to-regexp` dependency + * deps: debug@3.1.0 + - Add `DEBUG_HIDE_DATE` environment variable + - Change timer to per-namespace instead of global + - Change non-TTY date format + - Remove `DEBUG_FD` environment variable support + - Support 256 namespace colors + * deps: router@2.0.0-alpha.1 + - Add basic support for returned, rejected Promises + - Fix JSDoc for `Router` constructor + - deps: debug@3.1.0 + - deps: parseurl@~1.3.2 + - deps: setprototypeof@1.1.0 + - deps: utils-merge@1.0.1 + +5.0.0-alpha.6 / 2017-09-24 +========================== + +This is the sixth Express 5.0 alpha release, based off 4.15.5 and includes +changes from 5.0.0-alpha.5. + + * remove: + - `res.redirect(url, status)` signature - use `res.redirect(status, url)` + - `res.send(status, body)` signature - use `res.status(status).send(body)` + * deps: router@~1.3.1 + - deps: debug@2.6.8 + +5.0.0-alpha.5 / 2017-03-06 +========================== + +This is the fifth Express 5.0 alpha release, based off 4.15.2 and includes +changes from 5.0.0-alpha.4. + +5.0.0-alpha.4 / 2017-03-01 +========================== + +This is the fourth Express 5.0 alpha release, based off 4.15.0 and includes +changes from 5.0.0-alpha.3. + + * remove: + - Remove Express 3.x middleware error stubs + * deps: router@~1.3.0 + - Add `next("router")` to exit from router + - Fix case where `router.use` skipped requests routes did not + - Skip routing when `req.url` is not set + - Use `%o` in path debug to tell types apart + - deps: debug@2.6.1 + - deps: setprototypeof@1.0.3 + - perf: add fast match path for `*` route + +5.0.0-alpha.3 / 2017-01-28 +========================== + +This is the third Express 5.0 alpha release, based off 4.14.1 and includes +changes from 5.0.0-alpha.2. + + * remove: + - `res.json(status, obj)` signature - use `res.status(status).json(obj)` + - `res.jsonp(status, obj)` signature - use `res.status(status).jsonp(obj)` + - `res.vary()` (no arguments) -- provide a field name as an argument + * deps: array-flatten@2.1.1 + * deps: path-is-absolute@1.0.1 + * deps: router@~1.1.5 + - deps: array-flatten@2.0.1 + - deps: methods@~1.1.2 + - deps: parseurl@~1.3.1 + - deps: setprototypeof@1.0.2 + +5.0.0-alpha.2 / 2015-07-06 +========================== + +This is the second Express 5.0 alpha release, based off 4.13.1 and includes +changes from 5.0.0-alpha.1. + + * remove: + - `app.param(fn)` + - `req.param()` -- use `req.params`, `req.body`, or `req.query` instead + * change: + - `res.render` callback is always async, even for sync view engines + - The leading `:` character in `name` for `app.param(name, fn)` is no longer removed + - Use `router` module for routing + - Use `path-is-absolute` module for absolute path detection + +5.0.0-alpha.1 / 2014-11-06 +========================== + +This is the first Express 5.0 alpha release, based off 4.10.1. + + * remove: + - `app.del` - use `app.delete` + - `req.acceptsCharset` - use `req.acceptsCharsets` + - `req.acceptsEncoding` - use `req.acceptsEncodings` + - `req.acceptsLanguage` - use `req.acceptsLanguages` + - `res.json(obj, status)` signature - use `res.json(status, obj)` + - `res.jsonp(obj, status)` signature - use `res.jsonp(status, obj)` + - `res.send(body, status)` signature - use `res.send(status, body)` + - `res.send(status)` signature - use `res.sendStatus(status)` + - `res.sendfile` - use `res.sendFile` instead + - `express.query` middleware + * change: + - `req.host` now returns host (`hostname:port`) - use `req.hostname` for only hostname + - `req.query` is now a getter instead of a plain property + * add: + - `app.router` is a reference to the base router 4.20.0 / 2024-09-10 ========== diff --git a/mcp/node_modules/express/Readme.md b/mcp/node_modules/express/Readme.md index bc108d5..7443b81 100644 --- a/mcp/node_modules/express/Readme.md +++ b/mcp/node_modules/express/Readme.md @@ -1,6 +1,6 @@ -[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) +[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](https://expressjs.com/) -**Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).** +**Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).** **This project has a [Code of Conduct][].** @@ -20,16 +20,16 @@ [![NPM Version][npm-version-image]][npm-url] -[![NPM Install Size][npm-install-size-image]][npm-install-size-url] [![NPM Downloads][npm-downloads-image]][npm-downloads-url] [![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] ```js -const express = require('express') +import express from 'express' + const app = express() -app.get('/', function (req, res) { +app.get('/', (req, res) => { res.send('Hello World') }) @@ -42,7 +42,7 @@ This is a [Node.js](https://nodejs.org/en/) module available through the [npm registry](https://www.npmjs.com/). Before installing, [download and install Node.js](https://nodejs.org/en/download/). -Node.js 0.10 or higher is required. +Node.js 18 or higher is required. If this is a brand new project, make sure to create a `package.json` first with the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file). @@ -50,11 +50,11 @@ the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file). Installation is done using the [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): -```console -$ npm install express +```bash +npm install express ``` -Follow [our installing guide](http://expressjs.com/en/starter/installing.html) +Follow [our installing guide](https://expressjs.com/en/starter/installing.html) for more information. ## Features @@ -69,14 +69,11 @@ for more information. ## Docs & Community - * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] - * [#express](https://web.libera.chat/#express) on [Libera Chat](https://libera.chat) IRC + * [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules - * Visit the [Wiki](https://github.com/expressjs/express/wiki) - * [Google Group](https://groups.google.com/group/express-js) for discussion - * [Gitter](https://gitter.im/expressjs/express) for support and discussion + * [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express -**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/expressjs/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/expressjs/express/wiki/New-features-in-4.x). +**PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5) ## Quick Start @@ -84,26 +81,26 @@ for more information. Install the executable. The executable's major version will match Express's: -```console -$ npm install -g express-generator@4 +```bash +npm install -g express-generator@4 ``` Create the app: -```console -$ express /tmp/foo && cd /tmp/foo +```bash +express /tmp/foo && cd /tmp/foo ``` Install dependencies: -```console -$ npm install +```bash +npm install ``` Start the server: -```console -$ npm start +```bash +npm start ``` View the website at: http://localhost:3000 @@ -115,29 +112,32 @@ $ npm start HTTP APIs. Express does not force you to use any specific ORM or template engine. With support for over - 14 template engines via [Consolidate.js](https://github.com/tj/consolidate.js), + 14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate), you can quickly craft your perfect framework. ## Examples - To view the examples, clone the Express repo and install the dependencies: + To view the examples, clone the Express repository: -```console -$ git clone https://github.com/expressjs/express.git --depth 1 -$ cd express -$ npm install +```bash +git clone https://github.com/expressjs/express.git --depth 1 && cd express +``` + + Then install the dependencies: + +```bash +npm install ``` Then run whichever example you want: -```console -$ node examples/content-negotiation +```bash +node examples/content-negotiation ``` ## Contributing [![Linux Build][github-actions-ci-image]][github-actions-ci-url] - [![Windows Build][appveyor-image]][appveyor-url] [![Test Coverage][coveralls-image]][coveralls-url] The Express.js project welcomes all constructive contributions. Contributions take many forms, @@ -152,11 +152,16 @@ If you discover a security vulnerability in Express, please see [Security Polici ### Running Tests -To run the test suite, first install the dependencies, then run `npm test`: +To run the test suite, first install the dependencies: -```console -$ npm install -$ npm test +```bash +npm install +``` + +Then run `npm test`: + +```bash +npm test ``` ## People @@ -192,18 +197,16 @@ The original author of Express is [TJ Holowaychuk](https://github.com/tj) ### Triagers * [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** +* [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** * [carpasse](https://github.com/carpasse) - **Carlos Serrano** * [CBID2](https://github.com/CBID2) - **Christine Belzie** -* [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** +* [dpopp07](https://github.com/dpopp07) - **Dustin Popp** * [UlisesGascon](https://github.com/UlisesGascon) - **Ulises GascĂłn** (he/him) -* [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** -* [0ss](https://github.com/0ss) - **Salah** -* [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) * [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** -* [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) -* [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** * [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) +* [Phillip9587](https://github.com/Phillip9587) - **Phillip Barta** * [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** +* [rxmarbles](https://github.com/rxmarbles) **Rick Markins** (He/him)
Triagers emeriti members @@ -236,6 +239,13 @@ The original author of Express is [TJ Holowaychuk](https://github.com/tj) * [sheplu](https://github.com/sheplu) - **Jean Burellier** * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** + * [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** + * [0ss](https://github.com/0ss) - **Salah** + * [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) + * [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) + * [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** + * [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** +
@@ -243,16 +253,12 @@ The original author of Express is [TJ Holowaychuk](https://github.com/tj) [MIT](LICENSE) -[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/express/master?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/express [coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/express/master [coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master -[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=linux +[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=CI [github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml [npm-downloads-image]: https://badgen.net/npm/dm/express [npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true -[npm-install-size-image]: https://badgen.net/packagephobia/install/express -[npm-install-size-url]: https://packagephobia.com/result?p=express [npm-url]: https://npmjs.org/package/express [npm-version-image]: https://badgen.net/npm/v/express [ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge diff --git a/mcp/node_modules/express/lib/application.js b/mcp/node_modules/express/lib/application.js index ebb30b5..cf6d78c 100644 --- a/mcp/node_modules/express/lib/application.js +++ b/mcp/node_modules/express/lib/application.js @@ -14,29 +14,24 @@ */ var finalhandler = require('finalhandler'); -var Router = require('./router'); -var methods = require('methods'); -var middleware = require('./middleware/init'); -var query = require('./middleware/query'); var debug = require('debug')('express:application'); var View = require('./view'); -var http = require('http'); +var http = require('node:http'); +var methods = require('./utils').methods; var compileETag = require('./utils').compileETag; var compileQueryParser = require('./utils').compileQueryParser; var compileTrust = require('./utils').compileTrust; -var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); -var merge = require('utils-merge'); -var resolve = require('path').resolve; -var setPrototypeOf = require('setprototypeof') +var resolve = require('node:path').resolve; +var once = require('once') +var Router = require('router'); /** * Module variables. * @private */ -var hasOwnProperty = Object.prototype.hasOwnProperty var slice = Array.prototype.slice; +var flatten = Array.prototype.flat; /** * Application prototype. @@ -62,11 +57,29 @@ var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default'; */ app.init = function init() { - this.cache = {}; - this.engines = {}; - this.settings = {}; + var router = null; + + this.cache = Object.create(null); + this.engines = Object.create(null); + this.settings = Object.create(null); this.defaultConfiguration(); + + // Setup getting to lazily add base router + Object.defineProperty(this, 'router', { + configurable: true, + enumerable: true, + get: function getrouter() { + if (router === null) { + router = new Router({ + caseSensitive: this.enabled('case sensitive routing'), + strict: this.enabled('strict routing') + }); + } + + return router; + } + }); }; /** @@ -81,7 +94,7 @@ app.defaultConfiguration = function defaultConfiguration() { this.enable('x-powered-by'); this.set('etag', 'weak'); this.set('env', env); - this.set('query parser', 'extended'); + this.set('query parser', 'simple') this.set('subdomain offset', 2); this.set('trust proxy', false); @@ -102,10 +115,10 @@ app.defaultConfiguration = function defaultConfiguration() { } // inherit protos - setPrototypeOf(this.request, parent.request) - setPrototypeOf(this.response, parent.response) - setPrototypeOf(this.engines, parent.engines) - setPrototypeOf(this.settings, parent.settings) + Object.setPrototypeOf(this.request, parent.request) + Object.setPrototypeOf(this.response, parent.response) + Object.setPrototypeOf(this.engines, parent.engines) + Object.setPrototypeOf(this.settings, parent.settings) }); // setup locals @@ -125,32 +138,6 @@ app.defaultConfiguration = function defaultConfiguration() { if (env === 'production') { this.enable('view cache'); } - - Object.defineProperty(this, 'router', { - get: function() { - throw new Error('\'app.router\' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.'); - } - }); -}; - -/** - * lazily adds the base router if it has not yet been added. - * - * We cannot add the base router in the defaultConfiguration because - * it reads app settings which might be set after that has run. - * - * @private - */ -app.lazyrouter = function lazyrouter() { - if (!this._router) { - this._router = new Router({ - caseSensitive: this.enabled('case sensitive routing'), - strict: this.enabled('strict routing') - }); - - this._router.use(query(this.get('query parser fn'))); - this._router.use(middleware.init(this)); - } }; /** @@ -163,22 +150,31 @@ app.lazyrouter = function lazyrouter() { */ app.handle = function handle(req, res, callback) { - var router = this._router; - // final handler var done = callback || finalhandler(req, res, { env: this.get('env'), onerror: logerror.bind(this) }); - // no routes - if (!router) { - debug('no routes defined on app'); - done(); - return; + // set powered by header + if (this.enabled('x-powered-by')) { + res.setHeader('X-Powered-By', 'Express'); } - router.handle(req, res, done); + // set circular references + req.res = res; + res.req = req; + + // alter the prototypes + Object.setPrototypeOf(req, this.request) + Object.setPrototypeOf(res, this.response) + + // setup locals + if (!res.locals) { + res.locals = Object.create(null); + } + + this.router.handle(req, res, done); }; /** @@ -211,15 +207,14 @@ app.use = function use(fn) { } } - var fns = flatten(slice.call(arguments, offset)); + var fns = flatten.call(slice.call(arguments, offset), Infinity); if (fns.length === 0) { throw new TypeError('app.use() requires a middleware function') } - // setup router - this.lazyrouter(); - var router = this._router; + // get router + var router = this.router; fns.forEach(function (fn) { // non-express app @@ -235,8 +230,8 @@ app.use = function use(fn) { router.use(path, function mounted_app(req, res, next) { var orig = req.app; fn.handle(req, res, function (err) { - setPrototypeOf(req, orig.request) - setPrototypeOf(res, orig.response) + Object.setPrototypeOf(req, orig.request) + Object.setPrototypeOf(res, orig.response) next(err); }); }); @@ -259,8 +254,7 @@ app.use = function use(fn) { */ app.route = function route(path) { - this.lazyrouter(); - return this._router.route(path); + return this.router.route(path); }; /** @@ -326,8 +320,6 @@ app.engine = function engine(ext, fn) { */ app.param = function param(name, fn) { - this.lazyrouter(); - if (Array.isArray(name)) { for (var i = 0; i < name.length; i++) { this.param(name[i], fn); @@ -336,7 +328,7 @@ app.param = function param(name, fn) { return this; } - this._router.param(name, fn); + this.router.param(name, fn); return this; }; @@ -359,17 +351,7 @@ app.param = function param(name, fn) { app.set = function set(setting, val) { if (arguments.length === 1) { // app.get(setting) - var settings = this.settings - - while (settings && settings !== Object.prototype) { - if (hasOwnProperty.call(settings, setting)) { - return settings[setting] - } - - settings = Object.getPrototypeOf(settings) - } - - return undefined + return this.settings[setting]; } debug('set "%s" to %o', setting, val); @@ -486,16 +468,14 @@ app.disable = function disable(setting) { * Delegate `.VERB(...)` calls to `router.VERB(...)`. */ -methods.forEach(function(method){ - app[method] = function(path){ +methods.forEach(function (method) { + app[method] = function (path) { if (method === 'get' && arguments.length === 1) { // app.get(setting) return this.set(path); } - this.lazyrouter(); - - var route = this._router.route(path); + var route = this.route(path); route[method].apply(route, slice.call(arguments, 1)); return this; }; @@ -512,9 +492,7 @@ methods.forEach(function(method){ */ app.all = function all(path) { - this.lazyrouter(); - - var route = this._router.route(path); + var route = this.route(path); var args = slice.call(arguments, 1); for (var i = 0; i < methods.length; i++) { @@ -524,10 +502,6 @@ app.all = function all(path) { return this; }; -// del -> delete alias - -app.del = deprecate.function(app.delete, 'app.del: Use app.delete instead'); - /** * Render the given view `name` name with `options` * and a callback accepting an error and the @@ -550,7 +524,6 @@ app.render = function render(name, options, callback) { var done = callback; var engines = this.engines; var opts = options; - var renderOptions = {}; var view; // support callback function as second arg @@ -559,16 +532,8 @@ app.render = function render(name, options, callback) { opts = {}; } - // merge app.locals - merge(renderOptions, this.locals); - - // merge options._locals - if (opts._locals) { - merge(renderOptions, opts._locals); - } - // merge options - merge(renderOptions, opts); + var renderOptions = { ...this.locals, ...opts._locals, ...opts }; // set .cache unless explicitly provided if (renderOptions.cache == null) { @@ -618,8 +583,8 @@ app.render = function render(name, options, callback) { * and HTTPS server you may do so with the "http" * and "https" modules as shown here: * - * var http = require('http') - * , https = require('https') + * var http = require('node:http') + * , https = require('node:https') * , express = require('express') * , app = express(); * @@ -631,9 +596,14 @@ app.render = function render(name, options, callback) { */ app.listen = function listen() { - var server = http.createServer(this); - return server.listen.apply(server, arguments); -}; + var server = http.createServer(this) + var args = Array.prototype.slice.call(arguments) + if (typeof args[args.length - 1] === 'function') { + var done = args[args.length - 1] = once(args[args.length - 1]) + server.once('error', done) + } + return server.listen.apply(server, args) +} /** * Log error using console.error. diff --git a/mcp/node_modules/express/lib/express.js b/mcp/node_modules/express/lib/express.js index d188a16..2d502eb 100644 --- a/mcp/node_modules/express/lib/express.js +++ b/mcp/node_modules/express/lib/express.js @@ -13,11 +13,10 @@ */ var bodyParser = require('body-parser') -var EventEmitter = require('events').EventEmitter; +var EventEmitter = require('node:events').EventEmitter; var mixin = require('merge-descriptors'); var proto = require('./application'); -var Route = require('./router/route'); -var Router = require('./router'); +var Router = require('router'); var req = require('./request'); var res = require('./response'); @@ -68,7 +67,7 @@ exports.response = res; * Expose constructors. */ -exports.Route = Route; +exports.Route = Router.Route; exports.Router = Router; /** @@ -76,41 +75,7 @@ exports.Router = Router; */ exports.json = bodyParser.json -exports.query = require('./middleware/query'); exports.raw = bodyParser.raw exports.static = require('serve-static'); exports.text = bodyParser.text exports.urlencoded = bodyParser.urlencoded - -/** - * Replace removed middleware with an appropriate error message. - */ - -var removedMiddlewares = [ - 'bodyParser', - 'compress', - 'cookieSession', - 'session', - 'logger', - 'cookieParser', - 'favicon', - 'responseTime', - 'errorHandler', - 'timeout', - 'methodOverride', - 'vhost', - 'csrf', - 'directory', - 'limit', - 'multipart', - 'staticCache' -] - -removedMiddlewares.forEach(function (name) { - Object.defineProperty(exports, name, { - get: function () { - throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.'); - }, - configurable: true - }); -}); diff --git a/mcp/node_modules/express/lib/middleware/init.js b/mcp/node_modules/express/lib/middleware/init.js deleted file mode 100644 index dfd0427..0000000 --- a/mcp/node_modules/express/lib/middleware/init.js +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var setPrototypeOf = require('setprototypeof') - -/** - * Initialization middleware, exposing the - * request and response to each other, as well - * as defaulting the X-Powered-By header field. - * - * @param {Function} app - * @return {Function} - * @api private - */ - -exports.init = function(app){ - return function expressInit(req, res, next){ - if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); - req.res = res; - res.req = req; - req.next = next; - - setPrototypeOf(req, app.request) - setPrototypeOf(res, app.response) - - res.locals = res.locals || Object.create(null); - - next(); - }; -}; - diff --git a/mcp/node_modules/express/lib/middleware/query.js b/mcp/node_modules/express/lib/middleware/query.js deleted file mode 100644 index 7e91669..0000000 --- a/mcp/node_modules/express/lib/middleware/query.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - */ - -var merge = require('utils-merge') -var parseUrl = require('parseurl'); -var qs = require('qs'); - -/** - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function query(options) { - var opts = merge({}, options) - var queryparse = qs.parse; - - if (typeof options === 'function') { - queryparse = options; - opts = undefined; - } - - if (opts !== undefined && opts.allowPrototypes === undefined) { - // back-compat for qs module - opts.allowPrototypes = true; - } - - return function query(req, res, next){ - if (!req.query) { - var val = parseUrl(req).query; - req.query = queryparse(val, opts); - } - - next(); - }; -}; diff --git a/mcp/node_modules/express/lib/request.js b/mcp/node_modules/express/lib/request.js index 3f1eeca..d8e5263 100644 --- a/mcp/node_modules/express/lib/request.js +++ b/mcp/node_modules/express/lib/request.js @@ -14,10 +14,9 @@ */ var accepts = require('accepts'); -var deprecate = require('depd')('express'); -var isIP = require('net').isIP; +var isIP = require('node:net').isIP; var typeis = require('type-is'); -var http = require('http'); +var http = require('node:http'); var fresh = require('fresh'); var parseRange = require('range-parser'); var parse = require('parseurl'); @@ -147,9 +146,6 @@ req.acceptsEncodings = function(){ return accept.encodings.apply(accept, arguments); }; -req.acceptsEncoding = deprecate.function(req.acceptsEncodings, - 'req.acceptsEncoding: Use acceptsEncodings instead'); - /** * Check if the given `charset`s are acceptable, * otherwise you should respond with 406 "Not Acceptable". @@ -164,9 +160,6 @@ req.acceptsCharsets = function(){ return accept.charsets.apply(accept, arguments); }; -req.acceptsCharset = deprecate.function(req.acceptsCharsets, - 'req.acceptsCharset: Use acceptsCharsets instead'); - /** * Check if the given `lang`s are acceptable, * otherwise you should respond with 406 "Not Acceptable". @@ -181,9 +174,6 @@ req.acceptsLanguages = function(){ return accept.languages.apply(accept, arguments); }; -req.acceptsLanguage = deprecate.function(req.acceptsLanguages, - 'req.acceptsLanguage: Use acceptsLanguages instead'); - /** * Parse Range header field, capping to the given `size`. * @@ -216,38 +206,27 @@ req.range = function range(size, options) { }; /** - * Return the value of param `name` when present or `defaultValue`. + * Parse the query string of `req.url`. * - * - Checks route placeholders, ex: _/user/:id_ - * - Checks body params, ex: id=12, {"id":12} - * - Checks query string params, ex: ?id=12 + * This uses the "query parser" setting to parse the raw + * string into an object. * - * To utilize request bodies, `req.body` - * should be an object. This can be done by using - * the `bodyParser()` middleware. - * - * @param {String} name - * @param {Mixed} [defaultValue] * @return {String} - * @public + * @api public */ -req.param = function param(name, defaultValue) { - var params = this.params || {}; - var body = this.body || {}; - var query = this.query || {}; +defineGetter(req, 'query', function query(){ + var queryparse = this.app.get('query parser fn'); - var args = arguments.length === 1 - ? 'name' - : 'name, default'; - deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead'); + if (!queryparse) { + // parsing is disabled + return Object.create(null); + } - if (null != params[name] && params.hasOwnProperty(name)) return params[name]; - if (null != body[name]) return body[name]; - if (null != query[name]) return query[name]; + var querystring = parse(this).query; - return defaultValue; -}; + return queryparse(querystring); +}); /** * Check if the incoming request contains the "Content-Type" @@ -414,7 +393,7 @@ defineGetter(req, 'path', function path() { }); /** - * Parse the "Host" header field to a hostname. + * Parse the "Host" header field to a host. * * When the "trust proxy" setting trusts the socket * address, the "X-Forwarded-Host" header field will @@ -424,18 +403,35 @@ defineGetter(req, 'path', function path() { * @public */ -defineGetter(req, 'hostname', function hostname(){ +defineGetter(req, 'host', function host(){ var trust = this.app.get('trust proxy fn'); - var host = this.get('X-Forwarded-Host'); + var val = this.get('X-Forwarded-Host'); - if (!host || !trust(this.connection.remoteAddress, 0)) { - host = this.get('Host'); - } else if (host.indexOf(',') !== -1) { + if (!val || !trust(this.connection.remoteAddress, 0)) { + val = this.get('Host'); + } else if (val.indexOf(',') !== -1) { // Note: X-Forwarded-Host is normally only ever a // single value, but this is to be safe. - host = host.substring(0, host.indexOf(',')).trimRight() + val = val.substring(0, val.indexOf(',')).trimRight() } + return val || undefined; +}); + +/** + * Parse the "Host" header field to a hostname. + * + * When the "trust proxy" setting trusts the socket + * address, the "X-Forwarded-Host" header field will + * be trusted. + * + * @return {String} + * @api public + */ + +defineGetter(req, 'hostname', function hostname(){ + var host = this.host; + if (!host) return; // IPv6 literal support @@ -449,15 +445,9 @@ defineGetter(req, 'hostname', function hostname(){ : host; }); -// TODO: change req.host to return host in next major - -defineGetter(req, 'host', deprecate.function(function host(){ - return this.hostname; -}, 'req.host: Use req.hostname instead')); - /** * Check if the request is fresh, aka - * Last-Modified and/or the ETag + * Last-Modified or the ETag * still match. * * @return {Boolean} diff --git a/mcp/node_modules/express/lib/response.js b/mcp/node_modules/express/lib/response.js index 2b654f4..9362d0e 100644 --- a/mcp/node_modules/express/lib/response.js +++ b/mcp/node_modules/express/lib/response.js @@ -12,18 +12,16 @@ * @private */ -var Buffer = require('safe-buffer').Buffer var contentDisposition = require('content-disposition'); var createError = require('http-errors') -var deprecate = require('depd')('express'); var encodeUrl = require('encodeurl'); var escapeHtml = require('escape-html'); -var http = require('http'); -var isAbsolute = require('./utils').isAbsolute; +var http = require('node:http'); var onFinished = require('on-finished'); -var path = require('path'); +var mime = require('mime-types') +var path = require('node:path'); +var pathIsAbsolute = require('node:path').isAbsolute; var statuses = require('statuses') -var merge = require('utils-merge'); var sign = require('cookie-signature').sign; var normalizeType = require('./utils').normalizeType; var normalizeTypes = require('./utils').normalizeTypes; @@ -31,7 +29,6 @@ var setCharset = require('./utils').setCharset; var cookie = require('cookie'); var send = require('send'); var extname = path.extname; -var mime = send.mime; var resolve = path.resolve; var vary = require('vary'); @@ -50,24 +47,28 @@ var res = Object.create(http.ServerResponse.prototype) module.exports = res /** - * Module variables. - * @private - */ - -var charsetRegExp = /;\s*charset\s*=/; - -/** - * Set status `code`. + * Set the HTTP status code for the response. * - * @param {Number} code - * @return {ServerResponse} + * Expects an integer value between 100 and 999 inclusive. + * Throws an error if the provided status code is not an integer or if it's outside the allowable range. + * + * @param {number} code - The HTTP status code to set. + * @return {ServerResponse} - Returns itself for chaining methods. + * @throws {TypeError} If `code` is not an integer. + * @throws {RangeError} If `code` is outside the range 100 to 999. * @public */ res.status = function status(code) { - if ((typeof code === 'string' || Math.floor(code) !== code) && code > 99 && code < 1000) { - deprecate('res.status(' + JSON.stringify(code) + '): use res.status(' + Math.floor(code) + ') instead') + // Check if the status code is not an integer + if (!Number.isInteger(code)) { + throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); } + // Check if the status code is outside of Node's valid range + if (code < 100 || code > 999) { + throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); + } + this.statusCode = code; return this; }; @@ -79,7 +80,11 @@ res.status = function status(code) { * * res.links({ * next: 'http://api.example.com/users?page=2', - * last: 'http://api.example.com/users?page=5' + * last: 'http://api.example.com/users?page=5', + * pages: [ + * 'http://api.example.com/users?page=1', + * 'http://api.example.com/users?page=2' + * ] * }); * * @param {Object} links @@ -87,11 +92,18 @@ res.status = function status(code) { * @public */ -res.links = function(links){ +res.links = function(links) { var link = this.get('Link') || ''; if (link) link += ', '; - return this.set('Link', link + Object.keys(links).map(function(rel){ - return '<' + links[rel] + '>; rel="' + rel + '"'; + return this.set('Link', link + Object.keys(links).map(function(rel) { + // Allow multiple links if links[rel] is an array + if (Array.isArray(links[rel])) { + return links[rel].map(function (singleLink) { + return `<${singleLink}>; rel="${rel}"`; + }).join(', '); + } else { + return `<${links[rel]}>; rel="${rel}"`; + } }).join(', ')); }; @@ -117,31 +129,6 @@ res.send = function send(body) { // settings var app = this.app; - // allow status / body - if (arguments.length === 2) { - // res.send(body, status) backwards compat - if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') { - deprecate('res.send(body, status): Use res.status(status).send(body) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.send(status, body): Use res.status(status).send(body) instead'); - this.statusCode = arguments[0]; - chunk = arguments[1]; - } - } - - // disambiguate res.send(status) and res.send(status, num) - if (typeof chunk === 'number' && arguments.length === 1) { - // res.send(status) will set status message as text string - if (!this.get('Content-Type')) { - this.type('txt'); - } - - deprecate('res.send(status): Use res.sendStatus(status) instead'); - this.statusCode = chunk; - chunk = statuses.message[chunk] - } - switch (typeof chunk) { // string defaulting to html case 'string': @@ -154,7 +141,7 @@ res.send = function send(body) { case 'object': if (chunk === null) { chunk = ''; - } else if (Buffer.isBuffer(chunk)) { + } else if (ArrayBuffer.isView(chunk)) { if (!this.get('Content-Type')) { this.type('bin'); } @@ -207,7 +194,7 @@ res.send = function send(body) { } // freshness - if (req.fresh) this.statusCode = 304; + if (req.fresh) this.status(304); // strip irrelevant headers if (204 === this.statusCode || 304 === this.statusCode) { @@ -248,27 +235,12 @@ res.send = function send(body) { */ res.json = function json(obj) { - var val = obj; - - // allow status / body - if (arguments.length === 2) { - // res.json(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.json(obj, status): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.json(status, obj): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; - } - } - // settings var app = this.app; var escape = app.get('json escape') var replacer = app.get('json replacer'); var spaces = app.get('json spaces'); - var body = stringify(val, replacer, spaces, escape) + var body = stringify(obj, replacer, spaces, escape) // content-type if (!this.get('Content-Type')) { @@ -291,27 +263,12 @@ res.json = function json(obj) { */ res.jsonp = function jsonp(obj) { - var val = obj; - - // allow status / body - if (arguments.length === 2) { - // res.jsonp(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead'); - this.statusCode = arguments[1]; - } else { - deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; - } - } - // settings var app = this.app; var escape = app.get('json escape') var replacer = app.get('json replacer'); var spaces = app.get('json spaces'); - var body = stringify(val, replacer, spaces, escape) + var body = stringify(obj, replacer, spaces, escape) var callback = this.req.query[app.get('jsonp callback name')]; // content-type @@ -369,7 +326,7 @@ res.jsonp = function jsonp(obj) { res.sendStatus = function sendStatus(statusCode) { var body = statuses.message[statusCode] || String(statusCode) - this.statusCode = statusCode; + this.status(statusCode); this.type('txt'); return this.send(body); @@ -437,12 +394,15 @@ res.sendFile = function sendFile(path, options, callback) { opts = {}; } - if (!opts.root && !isAbsolute(path)) { + if (!opts.root && !pathIsAbsolute(path)) { throw new TypeError('path must be absolute or specify root to res.sendFile'); } // create file stream var pathname = encodeURI(path); + + // wire application etag option to send + opts.etag = this.app.enabled('etag'); var file = send(req, pathname, opts); // transfer @@ -457,78 +417,6 @@ res.sendFile = function sendFile(path, options, callback) { }); }; -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `callback(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.headersSent` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendfile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendfile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendfile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @public - */ - -res.sendfile = function (path, options, callback) { - var done = callback; - var req = this.req; - var res = this; - var next = req.next; - var opts = options || {}; - - // support function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; - } - - // create file stream - var file = send(req, path, opts); - - // transfer - sendfile(res, file, opts, function (err) { - if (done) return done(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') { - next(err); - } - }); -}; - -res.sendfile = deprecate.function(res.sendfile, - 'res.sendfile: Use res.sendFile instead'); - /** * Transfer the file at the given `path` as an attachment. * @@ -599,8 +487,10 @@ res.download = function download (path, filename, options, callback) { }; /** - * Set _Content-Type_ response header with `type` through `mime.lookup()` + * Set _Content-Type_ response header with `type` through `mime.contentType()` * when it does not contain "/", or set the Content-Type to `type` otherwise. + * When no mapping is found though `mime.contentType()`, the type is set to + * "application/octet-stream". * * Examples: * @@ -618,7 +508,7 @@ res.download = function download (path, filename, options, callback) { res.contentType = res.type = function contentType(type) { var ct = type.indexOf('/') === -1 - ? mime.lookup(type) + ? (mime.contentType(type) || 'application/octet-stream') : type; return this.set('Content-Type', ct); @@ -767,6 +657,9 @@ res.append = function append(field, val) { * * Aliased as `res.header()`. * + * When the set header is "Content-Type", the type is expanded to include + * the charset if not present using `mime.contentType()`. + * * @param {String|Object} field * @param {String|Array} val * @return {ServerResponse} for chaining @@ -785,10 +678,7 @@ res.header = function header(field, val) { if (Array.isArray(value)) { throw new TypeError('Content-Type cannot be set to an Array'); } - if (!charsetRegExp.test(value)) { - var charset = mime.charsets.lookup(value.split(';')[0]); - if (charset) value += '; charset=' + charset.toLowerCase(); - } + value = mime.contentType(value) } this.setHeader(field, value); @@ -822,15 +712,10 @@ res.get = function(field){ */ res.clearCookie = function clearCookie(name, options) { - if (options) { - if (options.maxAge) { - deprecate('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); - } - if (options.expires) { - deprecate('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); - } - } - var opts = merge({ expires: new Date(1), path: '/' }, options); + // Force cookie expiration by setting expires to the past + const opts = { path: '/', ...options, expires: new Date(1)}; + // ensure maxAge is not passed + delete opts.maxAge return this.cookie(name, '', opts); }; @@ -860,7 +745,7 @@ res.clearCookie = function clearCookie(name, options) { */ res.cookie = function (name, value, options) { - var opts = merge({}, options); + var opts = { ...options }; var secret = this.req.secret; var signed = opts.signed; @@ -912,27 +797,13 @@ res.cookie = function (name, value, options) { */ res.location = function location(url) { - var loc; - - // "back" is an alias for the referrer - if (url === 'back') { - deprecate('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'); - loc = this.req.get('Referrer') || '/'; - } else { - loc = String(url); - } - - return this.set('Location', encodeUrl(loc)); + return this.set('Location', encodeUrl(url)); }; /** * Redirect to the given `url` with optional response `status` * defaulting to 302. * - * The resulting `url` is determined by `res.location()`, so - * it will play nicely with mounted apps, relative paths, - * `"back"` etc. - * * Examples: * * res.redirect('/foo/bar'); @@ -950,13 +821,8 @@ res.redirect = function redirect(url) { // allow status / url if (arguments.length === 2) { - if (typeof arguments[0] === 'number') { - status = arguments[0]; - address = arguments[1]; - } else { - deprecate('res.redirect(url, status): Use res.redirect(status, url) instead'); - status = arguments[1]; - } + status = arguments[0] + address = arguments[1] } // Set location header @@ -979,7 +845,7 @@ res.redirect = function redirect(url) { }); // Respond - this.statusCode = status; + this.status(status); this.set('Content-Length', Buffer.byteLength(body)); if (this.req.method === 'HEAD') { @@ -999,12 +865,6 @@ res.redirect = function redirect(url) { */ res.vary = function(field){ - // checks for back-compat - if (!field || (Array.isArray(field) && !field.length)) { - deprecate('res.vary(): Provide a field name'); - return this; - } - vary(this, field); return this; diff --git a/mcp/node_modules/express/lib/router/index.js b/mcp/node_modules/express/lib/router/index.js deleted file mode 100644 index abb3a6f..0000000 --- a/mcp/node_modules/express/lib/router/index.js +++ /dev/null @@ -1,673 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var Route = require('./route'); -var Layer = require('./layer'); -var methods = require('methods'); -var mixin = require('utils-merge'); -var debug = require('debug')('express:router'); -var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); -var parseUrl = require('parseurl'); -var setPrototypeOf = require('setprototypeof') - -/** - * Module variables. - * @private - */ - -var objectRegExp = /^\[object (\S+)\]$/; -var slice = Array.prototype.slice; -var toString = Object.prototype.toString; - -/** - * Initialize a new `Router` with the given `options`. - * - * @param {Object} [options] - * @return {Router} which is a callable function - * @public - */ - -var proto = module.exports = function(options) { - var opts = options || {}; - - function router(req, res, next) { - router.handle(req, res, next); - } - - // mixin Router class functions - setPrototypeOf(router, proto) - - router.params = {}; - router._params = []; - router.caseSensitive = opts.caseSensitive; - router.mergeParams = opts.mergeParams; - router.strict = opts.strict; - router.stack = []; - - return router; -}; - -/** - * Map the given param placeholder `name`(s) to the given callback. - * - * Parameter mapping is used to provide pre-conditions to routes - * which use normalized placeholders. For example a _:user_id_ parameter - * could automatically load a user's information from the database without - * any additional code, - * - * The callback uses the same signature as middleware, the only difference - * being that the value of the placeholder is passed, in this case the _id_ - * of the user. Once the `next()` function is invoked, just like middleware - * it will continue on to execute the route, or subsequent parameter functions. - * - * Just like in middleware, you must either respond to the request or call next - * to avoid stalling the request. - * - * app.param('user_id', function(req, res, next, id){ - * User.find(id, function(err, user){ - * if (err) { - * return next(err); - * } else if (!user) { - * return next(new Error('failed to load user')); - * } - * req.user = user; - * next(); - * }); - * }); - * - * @param {String} name - * @param {Function} fn - * @return {app} for chaining - * @public - */ - -proto.param = function param(name, fn) { - // param logic - if (typeof name === 'function') { - deprecate('router.param(fn): Refactor to use path params'); - this._params.push(name); - return; - } - - // apply param functions - var params = this._params; - var len = params.length; - var ret; - - if (name[0] === ':') { - deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.slice(1)) + ', fn) instead') - name = name.slice(1) - } - - for (var i = 0; i < len; ++i) { - if (ret = params[i](name, fn)) { - fn = ret; - } - } - - // ensure we end up with a - // middleware function - if ('function' !== typeof fn) { - throw new Error('invalid param() call for ' + name + ', got ' + fn); - } - - (this.params[name] = this.params[name] || []).push(fn); - return this; -}; - -/** - * Dispatch a req, res into the router. - * @private - */ - -proto.handle = function handle(req, res, out) { - var self = this; - - debug('dispatching %s %s', req.method, req.url); - - var idx = 0; - var protohost = getProtohost(req.url) || '' - var removed = ''; - var slashAdded = false; - var sync = 0 - var paramcalled = {}; - - // store options for OPTIONS request - // only used if OPTIONS request - var options = []; - - // middleware and routes - var stack = self.stack; - - // manage inter-router variables - var parentParams = req.params; - var parentUrl = req.baseUrl || ''; - var done = restore(out, req, 'baseUrl', 'next', 'params'); - - // setup next layer - req.next = next; - - // for options requests, respond with a default if nothing else responds - if (req.method === 'OPTIONS') { - done = wrap(done, function(old, err) { - if (err || options.length === 0) return old(err); - sendOptionsResponse(res, options, old); - }); - } - - // setup basic req values - req.baseUrl = parentUrl; - req.originalUrl = req.originalUrl || req.url; - - next(); - - function next(err) { - var layerError = err === 'route' - ? null - : err; - - // remove added slash - if (slashAdded) { - req.url = req.url.slice(1) - slashAdded = false; - } - - // restore altered req.url - if (removed.length !== 0) { - req.baseUrl = parentUrl; - req.url = protohost + removed + req.url.slice(protohost.length) - removed = ''; - } - - // signal to exit router - if (layerError === 'router') { - setImmediate(done, null) - return - } - - // no more matching layers - if (idx >= stack.length) { - setImmediate(done, layerError); - return; - } - - // max sync stack - if (++sync > 100) { - return setImmediate(next, err) - } - - // get pathname of request - var path = getPathname(req); - - if (path == null) { - return done(layerError); - } - - // find next matching layer - var layer; - var match; - var route; - - while (match !== true && idx < stack.length) { - layer = stack[idx++]; - match = matchLayer(layer, path); - route = layer.route; - - if (typeof match !== 'boolean') { - // hold on to layerError - layerError = layerError || match; - } - - if (match !== true) { - continue; - } - - if (!route) { - // process non-route handlers normally - continue; - } - - if (layerError) { - // routes do not match with a pending error - match = false; - continue; - } - - var method = req.method; - var has_method = route._handles_method(method); - - // build up automatic options response - if (!has_method && method === 'OPTIONS') { - appendMethods(options, route._options()); - } - - // don't even bother matching route - if (!has_method && method !== 'HEAD') { - match = false; - } - } - - // no match - if (match !== true) { - return done(layerError); - } - - // store route for dispatch on change - if (route) { - req.route = route; - } - - // Capture one-time layer values - req.params = self.mergeParams - ? mergeParams(layer.params, parentParams) - : layer.params; - var layerPath = layer.path; - - // this should be done for the layer - self.process_params(layer, paramcalled, req, res, function (err) { - if (err) { - next(layerError || err) - } else if (route) { - layer.handle_request(req, res, next) - } else { - trim_prefix(layer, layerError, layerPath, path) - } - - sync = 0 - }); - } - - function trim_prefix(layer, layerError, layerPath, path) { - if (layerPath.length !== 0) { - // Validate path is a prefix match - if (layerPath !== path.slice(0, layerPath.length)) { - next(layerError) - return - } - - // Validate path breaks on a path separator - var c = path[layerPath.length] - if (c && c !== '/' && c !== '.') return next(layerError) - - // Trim off the part of the url that matches the route - // middleware (.use stuff) needs to have the path stripped - debug('trim prefix (%s) from url %s', layerPath, req.url); - removed = layerPath; - req.url = protohost + req.url.slice(protohost.length + removed.length) - - // Ensure leading slash - if (!protohost && req.url[0] !== '/') { - req.url = '/' + req.url; - slashAdded = true; - } - - // Setup base URL (no trailing slash) - req.baseUrl = parentUrl + (removed[removed.length - 1] === '/' - ? removed.substring(0, removed.length - 1) - : removed); - } - - debug('%s %s : %s', layer.name, layerPath, req.originalUrl); - - if (layerError) { - layer.handle_error(layerError, req, res, next); - } else { - layer.handle_request(req, res, next); - } - } -}; - -/** - * Process any parameters for the layer. - * @private - */ - -proto.process_params = function process_params(layer, called, req, res, done) { - var params = this.params; - - // captured parameters from the layer, keys and values - var keys = layer.keys; - - // fast track - if (!keys || keys.length === 0) { - return done(); - } - - var i = 0; - var name; - var paramIndex = 0; - var key; - var paramVal; - var paramCallbacks; - var paramCalled; - - // process params in order - // param callbacks can be async - function param(err) { - if (err) { - return done(err); - } - - if (i >= keys.length ) { - return done(); - } - - paramIndex = 0; - key = keys[i++]; - name = key.name; - paramVal = req.params[name]; - paramCallbacks = params[name]; - paramCalled = called[name]; - - if (paramVal === undefined || !paramCallbacks) { - return param(); - } - - // param previously called with same value or error occurred - if (paramCalled && (paramCalled.match === paramVal - || (paramCalled.error && paramCalled.error !== 'route'))) { - // restore value - req.params[name] = paramCalled.value; - - // next param - return param(paramCalled.error); - } - - called[name] = paramCalled = { - error: null, - match: paramVal, - value: paramVal - }; - - paramCallback(); - } - - // single param callbacks - function paramCallback(err) { - var fn = paramCallbacks[paramIndex++]; - - // store updated value - paramCalled.value = req.params[key.name]; - - if (err) { - // store error - paramCalled.error = err; - param(err); - return; - } - - if (!fn) return param(); - - try { - fn(req, res, paramCallback, paramVal, key.name); - } catch (e) { - paramCallback(e); - } - } - - param(); -}; - -/** - * Use the given middleware function, with optional path, defaulting to "/". - * - * Use (like `.all`) will run for any http METHOD, but it will not add - * handlers for those methods so OPTIONS requests will not consider `.use` - * functions even if they could respond. - * - * The other difference is that _route_ path is stripped and not visible - * to the handler function. The main effect of this feature is that mounted - * handlers can operate without any code changes regardless of the "prefix" - * pathname. - * - * @public - */ - -proto.use = function use(fn) { - var offset = 0; - var path = '/'; - - // default path to '/' - // disambiguate router.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; - - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; - } - - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; - } - } - - var callbacks = flatten(slice.call(arguments, offset)); - - if (callbacks.length === 0) { - throw new TypeError('Router.use() requires a middleware function') - } - - for (var i = 0; i < callbacks.length; i++) { - var fn = callbacks[i]; - - if (typeof fn !== 'function') { - throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn)) - } - - // add the middleware - debug('use %o %s', path, fn.name || '') - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: false, - end: false - }, fn); - - layer.route = undefined; - - this.stack.push(layer); - } - - return this; -}; - -/** - * Create a new Route for the given path. - * - * Each route contains a separate middleware stack and VERB handlers. - * - * See the Route api documentation for details on adding handlers - * and middleware to routes. - * - * @param {String} path - * @return {Route} - * @public - */ - -proto.route = function route(path) { - var route = new Route(path); - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: this.strict, - end: true - }, route.dispatch.bind(route)); - - layer.route = route; - - this.stack.push(layer); - return route; -}; - -// create Router#VERB functions -methods.concat('all').forEach(function(method){ - proto[method] = function(path){ - var route = this.route(path) - route[method].apply(route, slice.call(arguments, 1)); - return this; - }; -}); - -// append methods to a list of methods -function appendMethods(list, addition) { - for (var i = 0; i < addition.length; i++) { - var method = addition[i]; - if (list.indexOf(method) === -1) { - list.push(method); - } - } -} - -// get pathname of request -function getPathname(req) { - try { - return parseUrl(req).pathname; - } catch (err) { - return undefined; - } -} - -// Get get protocol + host for a URL -function getProtohost(url) { - if (typeof url !== 'string' || url.length === 0 || url[0] === '/') { - return undefined - } - - var searchIndex = url.indexOf('?') - var pathLength = searchIndex !== -1 - ? searchIndex - : url.length - var fqdnIndex = url.slice(0, pathLength).indexOf('://') - - return fqdnIndex !== -1 - ? url.substring(0, url.indexOf('/', 3 + fqdnIndex)) - : undefined -} - -// get type for error message -function gettype(obj) { - var type = typeof obj; - - if (type !== 'object') { - return type; - } - - // inspect [[Class]] for objects - return toString.call(obj) - .replace(objectRegExp, '$1'); -} - -/** - * Match path to a layer. - * - * @param {Layer} layer - * @param {string} path - * @private - */ - -function matchLayer(layer, path) { - try { - return layer.match(path); - } catch (err) { - return err; - } -} - -// merge params with parent params -function mergeParams(params, parent) { - if (typeof parent !== 'object' || !parent) { - return params; - } - - // make copy of parent for base - var obj = mixin({}, parent); - - // simple non-numeric merging - if (!(0 in params) || !(0 in parent)) { - return mixin(obj, params); - } - - var i = 0; - var o = 0; - - // determine numeric gaps - while (i in params) { - i++; - } - - while (o in parent) { - o++; - } - - // offset numeric indices in params before merge - for (i--; i >= 0; i--) { - params[i + o] = params[i]; - - // create holes for the merge when necessary - if (i < o) { - delete params[i]; - } - } - - return mixin(obj, params); -} - -// restore obj props after function -function restore(fn, obj) { - var props = new Array(arguments.length - 2); - var vals = new Array(arguments.length - 2); - - for (var i = 0; i < props.length; i++) { - props[i] = arguments[i + 2]; - vals[i] = obj[props[i]]; - } - - return function () { - // restore vals - for (var i = 0; i < props.length; i++) { - obj[props[i]] = vals[i]; - } - - return fn.apply(this, arguments); - }; -} - -// send an OPTIONS response -function sendOptionsResponse(res, options, next) { - try { - var body = options.join(','); - res.set('Allow', body); - res.send(body); - } catch (err) { - next(err); - } -} - -// wrap a function -function wrap(old, fn) { - return function proxy() { - var args = new Array(arguments.length + 1); - - args[0] = old; - for (var i = 0, len = arguments.length; i < len; i++) { - args[i + 1] = arguments[i]; - } - - fn.apply(this, args); - }; -} diff --git a/mcp/node_modules/express/lib/router/layer.js b/mcp/node_modules/express/lib/router/layer.js deleted file mode 100644 index 4dc8e86..0000000 --- a/mcp/node_modules/express/lib/router/layer.js +++ /dev/null @@ -1,181 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var pathRegexp = require('path-to-regexp'); -var debug = require('debug')('express:router:layer'); - -/** - * Module variables. - * @private - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Module exports. - * @public - */ - -module.exports = Layer; - -function Layer(path, options, fn) { - if (!(this instanceof Layer)) { - return new Layer(path, options, fn); - } - - debug('new %o', path) - var opts = options || {}; - - this.handle = fn; - this.name = fn.name || ''; - this.params = undefined; - this.path = undefined; - this.regexp = pathRegexp(path, this.keys = [], opts); - - // set fast path flags - this.regexp.fast_star = path === '*' - this.regexp.fast_slash = path === '/' && opts.end === false -} - -/** - * Handle the error for the layer. - * - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_error = function handle_error(error, req, res, next) { - var fn = this.handle; - - if (fn.length !== 4) { - // not a standard error handler - return next(error); - } - - try { - fn(error, req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Handle the request for the layer. - * - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_request = function handle(req, res, next) { - var fn = this.handle; - - if (fn.length > 3) { - // not a standard request handler - return next(); - } - - try { - fn(req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Check if this route matches `path`, if so - * populate `.params`. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -Layer.prototype.match = function match(path) { - var match - - if (path != null) { - // fast path non-ending match for / (any path matches) - if (this.regexp.fast_slash) { - this.params = {} - this.path = '' - return true - } - - // fast path for * (everything matched in a param) - if (this.regexp.fast_star) { - this.params = {'0': decode_param(path)} - this.path = path - return true - } - - // match the path - match = this.regexp.exec(path) - } - - if (!match) { - this.params = undefined; - this.path = undefined; - return false; - } - - // store values - this.params = {}; - this.path = match[0] - - var keys = this.keys; - var params = this.params; - - for (var i = 1; i < match.length; i++) { - var key = keys[i - 1]; - var prop = key.name; - var val = decode_param(match[i]) - - if (val !== undefined || !(hasOwnProperty.call(params, prop))) { - params[prop] = val; - } - } - - return true; -}; - -/** - * Decode param value. - * - * @param {string} val - * @return {string} - * @private - */ - -function decode_param(val) { - if (typeof val !== 'string' || val.length === 0) { - return val; - } - - try { - return decodeURIComponent(val); - } catch (err) { - if (err instanceof URIError) { - err.message = 'Failed to decode param \'' + val + '\''; - err.status = err.statusCode = 400; - } - - throw err; - } -} diff --git a/mcp/node_modules/express/lib/router/route.js b/mcp/node_modules/express/lib/router/route.js deleted file mode 100644 index a65756d..0000000 --- a/mcp/node_modules/express/lib/router/route.js +++ /dev/null @@ -1,230 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var debug = require('debug')('express:router:route'); -var flatten = require('array-flatten'); -var Layer = require('./layer'); -var methods = require('methods'); - -/** - * Module variables. - * @private - */ - -var slice = Array.prototype.slice; -var toString = Object.prototype.toString; - -/** - * Module exports. - * @public - */ - -module.exports = Route; - -/** - * Initialize `Route` with the given `path`, - * - * @param {String} path - * @public - */ - -function Route(path) { - this.path = path; - this.stack = []; - - debug('new %o', path) - - // route handlers for various http methods - this.methods = {}; -} - -/** - * Determine if the route handles a given method. - * @private - */ - -Route.prototype._handles_method = function _handles_method(method) { - if (this.methods._all) { - return true; - } - - // normalize name - var name = typeof method === 'string' - ? method.toLowerCase() - : method - - if (name === 'head' && !this.methods['head']) { - name = 'get'; - } - - return Boolean(this.methods[name]); -}; - -/** - * @return {Array} supported HTTP methods - * @private - */ - -Route.prototype._options = function _options() { - var methods = Object.keys(this.methods); - - // append automatic head - if (this.methods.get && !this.methods.head) { - methods.push('head'); - } - - for (var i = 0; i < methods.length; i++) { - // make upper case - methods[i] = methods[i].toUpperCase(); - } - - return methods; -}; - -/** - * dispatch req, res into this route - * @private - */ - -Route.prototype.dispatch = function dispatch(req, res, done) { - var idx = 0; - var stack = this.stack; - var sync = 0 - - if (stack.length === 0) { - return done(); - } - var method = typeof req.method === 'string' - ? req.method.toLowerCase() - : req.method - - if (method === 'head' && !this.methods['head']) { - method = 'get'; - } - - req.route = this; - - next(); - - function next(err) { - // signal to exit route - if (err && err === 'route') { - return done(); - } - - // signal to exit router - if (err && err === 'router') { - return done(err) - } - - // max sync stack - if (++sync > 100) { - return setImmediate(next, err) - } - - var layer = stack[idx++] - - // end of layers - if (!layer) { - return done(err) - } - - if (layer.method && layer.method !== method) { - next(err) - } else if (err) { - layer.handle_error(err, req, res, next); - } else { - layer.handle_request(req, res, next); - } - - sync = 0 - } -}; - -/** - * Add a handler for all HTTP verbs to this route. - * - * Behaves just like middleware and can respond or call `next` - * to continue processing. - * - * You can use multiple `.all` call to add multiple handlers. - * - * function check_something(req, res, next){ - * next(); - * }; - * - * function validate_user(req, res, next){ - * next(); - * }; - * - * route - * .all(validate_user) - * .all(check_something) - * .get(function(req, res, next){ - * res.send('hello world'); - * }); - * - * @param {function} handler - * @return {Route} for chaining - * @api public - */ - -Route.prototype.all = function all() { - var handles = flatten(slice.call(arguments)); - - for (var i = 0; i < handles.length; i++) { - var handle = handles[i]; - - if (typeof handle !== 'function') { - var type = toString.call(handle); - var msg = 'Route.all() requires a callback function but got a ' + type - throw new TypeError(msg); - } - - var layer = Layer('/', {}, handle); - layer.method = undefined; - - this.methods._all = true; - this.stack.push(layer); - } - - return this; -}; - -methods.forEach(function(method){ - Route.prototype[method] = function(){ - var handles = flatten(slice.call(arguments)); - - for (var i = 0; i < handles.length; i++) { - var handle = handles[i]; - - if (typeof handle !== 'function') { - var type = toString.call(handle); - var msg = 'Route.' + method + '() requires a callback function but got a ' + type - throw new Error(msg); - } - - debug('%s %o', method, this.path) - - var layer = Layer('/', {}, handle); - layer.method = method; - - this.methods[method] = true; - this.stack.push(layer); - } - - return this; - }; -}); diff --git a/mcp/node_modules/express/lib/utils.js b/mcp/node_modules/express/lib/utils.js index 56e12b9..d53c5a1 100644 --- a/mcp/node_modules/express/lib/utils.js +++ b/mcp/node_modules/express/lib/utils.js @@ -12,17 +12,20 @@ * @api private */ -var Buffer = require('safe-buffer').Buffer -var contentDisposition = require('content-disposition'); +var { METHODS } = require('node:http'); var contentType = require('content-type'); -var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); -var mime = require('send').mime; var etag = require('etag'); +var mime = require('mime-types') var proxyaddr = require('proxy-addr'); var qs = require('qs'); var querystring = require('querystring'); +/** + * A list of lowercased HTTP methods that are supported by Node.js. + * @api private + */ +exports.methods = METHODS.map((method) => method.toLowerCase()); + /** * Return strong ETag for `body`. * @@ -45,31 +48,6 @@ exports.etag = createETagGenerator({ weak: false }) exports.wetag = createETagGenerator({ weak: true }) -/** - * Check if `path` looks absolute. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -exports.isAbsolute = function(path){ - if ('/' === path[0]) return true; - if (':' === path[1] && ('\\' === path[2] || '/' === path[2])) return true; // Windows device path - if ('\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path -}; - -/** - * Flatten the given `arr`. - * - * @param {Array} arr - * @return {Array} - * @api private - */ - -exports.flatten = deprecate.function(flatten, - 'utils.flatten: use array-flatten npm module instead'); - /** * Normalize the given `type`, for example "html" becomes "text/html". * @@ -81,7 +59,7 @@ exports.flatten = deprecate.function(flatten, exports.normalizeType = function(type){ return ~type.indexOf('/') ? acceptParams(type) - : { value: mime.lookup(type), params: {} }; + : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} } }; /** @@ -92,27 +70,10 @@ exports.normalizeType = function(type){ * @api private */ -exports.normalizeTypes = function(types){ - var ret = []; - - for (var i = 0; i < types.length; ++i) { - ret.push(exports.normalizeType(types[i])); - } - - return ret; +exports.normalizeTypes = function(types) { + return types.map(exports.normalizeType); }; -/** - * Generate Content-Disposition header appropriate for the filename. - * non-ascii filenames are urlencoded and a filename* parameter is added - * - * @param {String} filename - * @return {String} - * @api private - */ - -exports.contentDisposition = deprecate.function(contentDisposition, - 'utils.contentDisposition: use content-disposition npm module instead'); /** * Parse accept params `str` returning an @@ -124,16 +85,33 @@ exports.contentDisposition = deprecate.function(contentDisposition, */ function acceptParams (str) { - var parts = str.split(/ *; */); - var ret = { value: parts[0], quality: 1, params: {} } + var length = str.length; + var colonIndex = str.indexOf(';'); + var index = colonIndex === -1 ? length : colonIndex; + var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} }; - for (var i = 1; i < parts.length; ++i) { - var pms = parts[i].split(/ *= */); - if ('q' === pms[0]) { - ret.quality = parseFloat(pms[1]); - } else { - ret.params[pms[0]] = pms[1]; + while (index < length) { + var splitIndex = str.indexOf('=', index); + if (splitIndex === -1) break; + + var colonIndex = str.indexOf(';', index); + var endIndex = colonIndex === -1 ? length : colonIndex; + + if (splitIndex > endIndex) { + index = str.lastIndexOf(';', splitIndex - 1) + 1; + continue; } + + var key = str.slice(index, splitIndex).trim(); + var value = str.slice(splitIndex + 1, endIndex).trim(); + + if (key === 'q') { + ret.quality = parseFloat(value); + } else { + ret.params[key] = value; + } + + index = endIndex + 1; } return ret; @@ -192,7 +170,6 @@ exports.compileQueryParser = function compileQueryParser(val) { fn = querystring.parse; break; case false: - fn = newObject; break; case 'extended': fn = parseExtendedQueryString; @@ -290,14 +267,3 @@ function parseExtendedQueryString(str) { allowPrototypes: true }); } - -/** - * Return new empty object. - * - * @return {Object} - * @api private - */ - -function newObject() { - return {}; -} diff --git a/mcp/node_modules/express/lib/view.js b/mcp/node_modules/express/lib/view.js index c08ab4d..d66b4a2 100644 --- a/mcp/node_modules/express/lib/view.js +++ b/mcp/node_modules/express/lib/view.js @@ -14,8 +14,8 @@ */ var debug = require('debug')('express:view'); -var path = require('path'); -var fs = require('fs'); +var path = require('node:path'); +var fs = require('node:fs'); /** * Module variables. @@ -131,8 +131,31 @@ View.prototype.lookup = function lookup(name) { */ View.prototype.render = function render(options, callback) { + var sync = true; + debug('render "%s"', this.path); - this.engine(this.path, options, callback); + + // render, normalizing sync callbacks + this.engine(this.path, options, function onRender() { + if (!sync) { + return callback.apply(this, arguments); + } + + // copy arguments + var args = new Array(arguments.length); + var cntx = this; + + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + + // force callback to be async + return process.nextTick(function renderTick() { + return callback.apply(cntx, args); + }); + }); + + sync = false; }; /** diff --git a/mcp/node_modules/express/package.json b/mcp/node_modules/express/package.json index 60f65fe..bdcd25e 100644 --- a/mcp/node_modules/express/package.json +++ b/mcp/node_modules/express/package.json @@ -1,7 +1,7 @@ { "name": "express", "description": "Fast, unopinionated, minimalist web framework", - "version": "4.21.2", + "version": "5.1.0", "author": "TJ Holowaychuk ", "contributors": [ "Aaron Heckmann ", @@ -14,7 +14,7 @@ ], "license": "MIT", "repository": "expressjs/express", - "homepage": "http://expressjs.com/", + "homepage": "https://expressjs.com/", "funding": { "type": "opencollective", "url": "https://opencollective.com/express" @@ -32,58 +32,54 @@ "api" ], "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "devDependencies": { "after": "0.8.2", - "connect-redis": "3.4.2", - "cookie-parser": "1.4.6", - "cookie-session": "2.0.0", - "ejs": "3.1.9", + "connect-redis": "^8.0.1", + "cookie-parser": "1.4.7", + "cookie-session": "2.1.0", + "ejs": "^3.1.10", "eslint": "8.47.0", - "express-session": "1.17.2", + "express-session": "^1.18.1", "hbs": "4.2.0", - "marked": "0.7.0", + "marked": "^15.0.3", "method-override": "3.0.0", - "mocha": "10.2.0", + "mocha": "^10.7.3", "morgan": "1.10.0", - "nyc": "15.1.0", + "nyc": "^17.1.0", "pbkdf2-password": "1.2.1", - "supertest": "6.3.0", + "supertest": "^6.3.0", "vhost": "~3.0.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "files": [ "LICENSE", @@ -94,7 +90,7 @@ ], "scripts": { "lint": "eslint .", - "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", + "test": "mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/", "test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", "test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" diff --git a/mcp/node_modules/finalhandler/HISTORY.md b/mcp/node_modules/finalhandler/HISTORY.md index 7faa4f0..4bc1850 100644 --- a/mcp/node_modules/finalhandler/HISTORY.md +++ b/mcp/node_modules/finalhandler/HISTORY.md @@ -1,3 +1,26 @@ +v2.1.0 / 2025-03-05 +================== + + * deps: + * use caret notation for dependency versions + * encodeurl@^2.0.0 + * debug@^4.4.0 + * remove `ServerResponse.headersSent` support check + * remove setImmediate support check + * update test dependencies + * remove unnecessary devDependency `safe-buffer` + * remove `unpipe` package and use native `unpipe()` method + * remove unnecessary devDependency `readable-stream` + * refactor: use object spread to copy error headers + * refactor: use replaceAll instead of replace with a regex + * refactor: replace setHeaders function with optimized inline header setting + +v2.0.0 / 2024-09-02 +================== + + * drop support for node <18 + * ignore status message for HTTP/2 (#53) + v1.3.1 / 2024-09-11 ================== diff --git a/mcp/node_modules/finalhandler/SECURITY.md b/mcp/node_modules/finalhandler/SECURITY.md deleted file mode 100644 index 6e23249..0000000 --- a/mcp/node_modules/finalhandler/SECURITY.md +++ /dev/null @@ -1,25 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `finalhandler` team and community take all security bugs seriously. Thank -you for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `finalhandler`. This -information can be found in the npm registry using the command -`npm owner ls finalhandler`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/pillarjs/finalhandler/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/mcp/node_modules/finalhandler/index.js b/mcp/node_modules/finalhandler/index.js index ec34be9..bf15e48 100644 --- a/mcp/node_modules/finalhandler/index.js +++ b/mcp/node_modules/finalhandler/index.js @@ -17,20 +17,12 @@ var escapeHtml = require('escape-html') var onFinished = require('on-finished') var parseUrl = require('parseurl') var statuses = require('statuses') -var unpipe = require('unpipe') /** * Module variables. * @private */ -var DOUBLE_SPACE_REGEXP = /\x20{2}/g -var NEWLINE_REGEXP = /\n/g - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) } var isFinished = onFinished.isFinished /** @@ -42,8 +34,8 @@ var isFinished = onFinished.isFinished function createHtmlDocument (message) { var body = escapeHtml(message) - .replace(NEWLINE_REGEXP, '
') - .replace(DOUBLE_SPACE_REGEXP, '  ') + .replaceAll('\n', '
') + .replaceAll(' ', '  ') return '\n' + '\n' + @@ -89,7 +81,7 @@ function finalhandler (req, res, options) { var status // ignore 404 on in-flight response - if (!err && headersSent(res)) { + if (!err && res.headersSent) { debug('cannot 404 after headers sent') return } @@ -119,11 +111,11 @@ function finalhandler (req, res, options) { // schedule onerror callback if (err && onerror) { - defer(onerror, err, req, res) + setImmediate(onerror, err, req, res) } // cannot actually respond - if (headersSent(res)) { + if (res.headersSent) { debug('cannot %d after headers sent', status) if (req.socket) { req.socket.destroy() @@ -149,15 +141,7 @@ function getErrorHeaders (err) { return undefined } - var headers = Object.create(null) - var keys = Object.keys(err.headers) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - headers[key] = err.headers[key] - } - - return headers + return { ...err.headers } } /** @@ -246,20 +230,6 @@ function getResponseStatusCode (res) { return status } -/** - * Determine if the response headers have been sent. - * - * @param {object} res - * @returns {boolean} - * @private - */ - -function headersSent (res) { - return typeof res.headersSent !== 'boolean' - ? Boolean(res._header) - : res.headersSent -} - /** * Send response. * @@ -289,7 +259,9 @@ function send (req, res, status, headers, message) { res.removeHeader('Content-Range') // response headers - setHeaders(res, headers) + for (const [key, value] of Object.entries(headers ?? {})) { + res.setHeader(key, value) + } // security headers res.setHeader('Content-Security-Policy', "default-src 'none'") @@ -313,29 +285,9 @@ function send (req, res, status, headers, message) { } // unpipe everything from the request - unpipe(req) + req.unpipe() // flush the request onFinished(req, write) req.resume() } - -/** - * Set response headers from an object. - * - * @param {OutgoingMessage} res - * @param {object} headers - * @private - */ - -function setHeaders (res, headers) { - if (!headers) { - return - } - - var keys = Object.keys(headers) - for (var i = 0; i < keys.length; i++) { - var key = keys[i] - res.setHeader(key, headers[key]) - } -} diff --git a/mcp/node_modules/finalhandler/package.json b/mcp/node_modules/finalhandler/package.json index 2363eb4..992b306 100644 --- a/mcp/node_modules/finalhandler/package.json +++ b/mcp/node_modules/finalhandler/package.json @@ -1,18 +1,17 @@ { "name": "finalhandler", "description": "Node.js final http responder", - "version": "1.3.1", + "version": "2.1.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "pillarjs/finalhandler", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "devDependencies": { "eslint": "7.32.0", @@ -22,16 +21,13 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", "eslint-plugin-standard": "4.1.0", - "mocha": "10.0.0", - "nyc": "15.1.0", - "readable-stream": "2.3.6", - "safe-buffer": "5.2.1", - "supertest": "6.2.4" + "mocha": "^11.0.1", + "nyc": "^17.1.0", + "supertest": "^7.0.0" }, "files": [ "LICENSE", "HISTORY.md", - "SECURITY.md", "index.js" ], "engines": { diff --git a/mcp/node_modules/fresh/HISTORY.md b/mcp/node_modules/fresh/HISTORY.md index 4586996..fd3888a 100644 --- a/mcp/node_modules/fresh/HISTORY.md +++ b/mcp/node_modules/fresh/HISTORY.md @@ -1,3 +1,13 @@ +2.0.0 - 2024-09-04 +========== + * Drop support for Node.js <18 + +1.0.0 - 2024-09-04 +========== + + * Drop support for Node.js below 0.8 + * Fix: Ignore `If-Modified-Since` in the presence of `If-None-Match`, according to [spec](https://www.rfc-editor.org/rfc/rfc9110.html#section-13.1.3-5). Fixes [#35](https://github.com/jshttp/fresh/issues/35) + 0.5.2 / 2017-09-13 ================== diff --git a/mcp/node_modules/fresh/README.md b/mcp/node_modules/fresh/README.md index 1c1c680..fd79c5b 100644 --- a/mcp/node_modules/fresh/README.md +++ b/mcp/node_modules/fresh/README.md @@ -3,7 +3,7 @@ [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] +[![Build Status][ci-image]][ci-url] [![Test Coverage][coveralls-image]][coveralls-url] HTTP response freshness testing @@ -20,8 +20,6 @@ $ npm install fresh ## API - - ```js var fresh = require('fresh') ``` @@ -42,7 +40,7 @@ to make handling these requests transparent. This module is designed to only follow the HTTP specifications, not to work-around all kinda of client bugs (especially since this module -typically does not recieve enough information to understand what the +typically does not receive enough information to understand what the client actually is). There is a known issue that in certain versions of Safari, Safari @@ -57,16 +55,16 @@ links to further reading on this Safari bug. ### API usage - + ```js var reqHeaders = { 'if-none-match': '"foo"' } -var resHeaders = { 'etag': '"bar"' } +var resHeaders = { etag: '"bar"' } fresh(reqHeaders, resHeaders) // => false var reqHeaders = { 'if-none-match': '"foo"' } -var resHeaders = { 'etag': '"foo"' } +var resHeaders = { etag: '"foo"' } fresh(reqHeaders, resHeaders) // => true ``` @@ -95,7 +93,7 @@ var server = http.createServer(function (req, res) { function isFresh (req, res) { return fresh(req.headers, { - 'etag': res.getHeader('ETag'), + etag: res.getHeader('ETag'), 'last-modified': res.getHeader('Last-Modified') }) } @@ -107,12 +105,12 @@ server.listen(3000) [MIT](LICENSE) +[ci-image]: https://img.shields.io/github/workflow/status/jshttp/fresh/ci/master?label=ci +[ci-url]: https://github.com/jshttp/fresh/actions/workflows/ci.yml [npm-image]: https://img.shields.io/npm/v/fresh.svg [npm-url]: https://npmjs.org/package/fresh [node-version-image]: https://img.shields.io/node/v/fresh.svg [node-version-url]: https://nodejs.org/en/ -[travis-image]: https://img.shields.io/travis/jshttp/fresh/master.svg -[travis-url]: https://travis-ci.org/jshttp/fresh [coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg [coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master [downloads-image]: https://img.shields.io/npm/dm/fresh.svg diff --git a/mcp/node_modules/fresh/index.js b/mcp/node_modules/fresh/index.js index d154f5a..fc3dea7 100644 --- a/mcp/node_modules/fresh/index.js +++ b/mcp/node_modules/fresh/index.js @@ -48,27 +48,26 @@ function fresh (reqHeaders, resHeaders) { return false } - // if-none-match - if (noneMatch && noneMatch !== '*') { - var etag = resHeaders['etag'] + // if-none-match takes precedent over if-modified-since + if (noneMatch) { + if (noneMatch === '*') { + return true + } + var etag = resHeaders.etag if (!etag) { return false } - var etagStale = true var matches = parseTokenList(noneMatch) for (var i = 0; i < matches.length; i++) { var match = matches[i] if (match === etag || match === 'W/' + etag || 'W/' + match === etag) { - etagStale = false - break + return true } } - if (etagStale) { - return false - } + return false } // if-modified-since diff --git a/mcp/node_modules/fresh/package.json b/mcp/node_modules/fresh/package.json index c2fa0f4..5d7e215 100644 --- a/mcp/node_modules/fresh/package.json +++ b/mcp/node_modules/fresh/package.json @@ -1,7 +1,7 @@ { "name": "fresh", "description": "HTTP response freshness testing", - "version": "0.5.2", + "version": "2.0.0", "author": "TJ Holowaychuk (http://tjholowaychuk.com)", "contributors": [ "Douglas Christopher Wilson ", @@ -18,15 +18,15 @@ "devDependencies": { "beautify-benchmark": "0.2.4", "benchmark": "2.1.4", - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "1.21.5" + "eslint": "8.12.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.0.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.0", + "nyc": "15.1.0" }, "files": [ "HISTORY.md", @@ -34,13 +34,13 @@ "index.js" ], "engines": { - "node": ">= 0.6" + "node": ">= 0.8" }, "scripts": { "bench": "node benchmark/index.js", - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" } } diff --git a/mcp/node_modules/iconv-lite/Changelog.md b/mcp/node_modules/iconv-lite/Changelog.md index f252313..464549b 100644 --- a/mcp/node_modules/iconv-lite/Changelog.md +++ b/mcp/node_modules/iconv-lite/Changelog.md @@ -1,50 +1,100 @@ -# 0.4.24 / 2018-08-22 +## 0.6.3 / 2021-05-23 + * Fix HKSCS encoding to prefer Big5 codes if both Big5 and HKSCS codes are possible (#264) + + +## 0.6.2 / 2020-07-08 + * Support Uint8Array-s decoding without conversion to Buffers, plus fix an edge case. + + +## 0.6.1 / 2020-06-28 + * Support Uint8Array-s directly when decoding (#246, by @gyzerok) + * Unify package.json version ranges to be strictly semver-compatible (#241) + * Fix minor issue in UTF-32 decoder's endianness detection code. + + +## 0.6.0 / 2020-06-08 + * Updated 'gb18030' encoding to :2005 edition (see https://github.com/whatwg/encoding/issues/22). + * Removed `iconv.extendNodeEncodings()` mechanism. It was deprecated 5 years ago and didn't work + in recent Node versions. + * Reworked Streaming API behavior in browser environments to fix #204. Streaming API will be + excluded by default in browser packs, saving ~100Kb bundle size, unless enabled explicitly using + `iconv.enableStreamingAPI(require('stream'))`. + * Updates to development environment & tests: + * Added ./test/webpack private package to test complex new use cases that need custom environment. + It's tested as a separate job in Travis CI. + * Updated generation code for the new EUC-KR index file format from Encoding Standard. + * Removed Buffer() constructor in tests (#197 by @gabrielschulhof). + + +## 0.5.2 / 2020-06-08 + * Added `iconv.getEncoder()` and `iconv.getDecoder()` methods to typescript definitions (#229). + * Fixed semver version to 6.1.2 to support Node 8.x (by @tanandara). + * Capped iconv version to 2.x as 3.x has dropped support for older Node versions. + * Switched from instanbul to c8 for code coverage. + + +## 0.5.1 / 2020-01-18 + + * Added cp720 encoding (#221, by @kr-deps) + * (minor) Changed Changelog.md formatting to use h2. + + +## 0.5.0 / 2019-06-26 + + * Added UTF-32 encoding, both little-endian and big-endian variants (UTF-32LE, UTF32-BE). If endianness + is not provided for decoding, it's deduced automatically from the stream using a heuristic similar to + what we use in UTF-16. (great work in #216 by @kshetline) + * Several minor updates to README (#217 by @oldj, plus some more) + * Added Node versions 10 and 12 to Travis test harness. + + +## 0.4.24 / 2018-08-22 * Added MIK encoding (#196, by @Ivan-Kalatchev) -# 0.4.23 / 2018-05-07 +## 0.4.23 / 2018-05-07 * Fix deprecation warning in Node v10 due to the last usage of `new Buffer` (#185, by @felixbuenemann) * Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn) -# 0.4.22 / 2018-05-05 +## 0.4.22 / 2018-05-05 * Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson) * Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson) -# 0.4.21 / 2018-04-06 +## 0.4.21 / 2018-04-06 * Fix encoding canonicalization (#156) * Fix the paths in the "browser" field in package.json (#174 by @LMLB) * Removed "contributors" section in package.json - see Git history instead. -# 0.4.20 / 2018-04-06 +## 0.4.20 / 2018-04-06 * Updated `new Buffer()` usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR) -# 0.4.19 / 2017-09-09 +## 0.4.19 / 2017-09-09 * Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147) * Re-generated windows1255 codec, because it was updated in iconv project * Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8 -# 0.4.18 / 2017-06-13 +## 0.4.18 / 2017-06-13 * Fixed CESU-8 regression in Node v8. -# 0.4.17 / 2017-04-22 +## 0.4.17 / 2017-04-22 * Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn) -# 0.4.16 / 2017-04-22 +## 0.4.16 / 2017-04-22 * Added support for React Native (#150) * Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex) @@ -53,12 +103,12 @@ * Added a warning if iconv-lite is loaded not as utf-8 (see #142) -# 0.4.15 / 2016-11-21 +## 0.4.15 / 2016-11-21 * Fixed typescript type definition (#137) -# 0.4.14 / 2016-11-20 +## 0.4.14 / 2016-11-20 * Preparation for v1.0 * Added Node v6 and latest Node versions to Travis CI test rig @@ -68,12 +118,12 @@ * Add ms prefix to dbcs windows encodings (@rokoroku) -# 0.4.13 / 2015-10-01 +## 0.4.13 / 2015-10-01 * Fix silly mistake in deprecation notice. -# 0.4.12 / 2015-09-26 +## 0.4.12 / 2015-09-26 * Node v4 support: * Added CESU-8 decoding (#106) @@ -81,18 +131,18 @@ * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) -# 0.4.11 / 2015-07-03 +## 0.4.11 / 2015-07-03 * Added CESU-8 encoding. -# 0.4.10 / 2015-05-26 +## 0.4.10 / 2015-05-26 * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not just spaces. This should minimize the importance of "default" endianness. -# 0.4.9 / 2015-05-24 +## 0.4.9 / 2015-05-24 * Streamlined BOM handling: strip BOM by default, add BOM when encoding if addBOM: true. Added docs to Readme. @@ -104,12 +154,12 @@ * Use strict mode in all files. -# 0.4.8 / 2015-04-14 +## 0.4.8 / 2015-04-14 * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) -# 0.4.7 / 2015-02-05 +## 0.4.7 / 2015-02-05 * stop official support of Node.js v0.8. Should still work, but no guarantees. reason: Packages needed for testing are hard to get on Travis CI. @@ -117,40 +167,40 @@ props (#89). -# 0.4.6 / 2015-01-12 +## 0.4.6 / 2015-01-12 * fix rare aliases of single-byte encodings (thanks @mscdex) * double the timeout for dbcs tests to make them less flaky on travis -# 0.4.5 / 2014-11-20 +## 0.4.5 / 2014-11-20 * fix windows-31j and x-sjis encoding support (@nleush) * minor fix: undefined variable reference when internal error happens -# 0.4.4 / 2014-07-16 +## 0.4.4 / 2014-07-16 * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) * fixed streaming base64 encoding -# 0.4.3 / 2014-06-14 +## 0.4.3 / 2014-06-14 * added encodings UTF-16BE and UTF-16 with BOM -# 0.4.2 / 2014-06-12 +## 0.4.2 / 2014-06-12 * don't throw exception if `extendNodeEncodings()` is called more than once -# 0.4.1 / 2014-06-11 +## 0.4.1 / 2014-06-11 * codepage 808 added -# 0.4.0 / 2014-06-10 +## 0.4.0 / 2014-06-10 * code is rewritten from scratch * all widespread encodings are supported diff --git a/mcp/node_modules/iconv-lite/README.md b/mcp/node_modules/iconv-lite/README.md index c981c37..3c97f87 100644 --- a/mcp/node_modules/iconv-lite/README.md +++ b/mcp/node_modules/iconv-lite/README.md @@ -1,38 +1,40 @@ -## Pure JS character encoding conversion [![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) +## iconv-lite: Pure JS character encoding conversion - * Doesn't need native code compilation. Works on Windows and in sandboxed environments like [Cloud9](http://c9.io). + * No need for native code compilation. Quick to install, works on Windows and in sandboxed environments like [Cloud9](http://c9.io). * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). - * Intuitive encode/decode API - * Streaming support for Node v0.10+ - * [Deprecated] Can extend Node.js primitives (buffers, streams) to support all iconv-lite encodings. - * In-browser usage via [Browserify](https://github.com/substack/node-browserify) (~180k gzip compressed with Buffer shim included). + * Intuitive encode/decode API, including Streaming support. + * In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). * Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. - * React Native is supported (need to explicitly `npm install` two more modules: `buffer` and `stream`). + * React Native is supported (need to install `stream` module to enable Streaming API). * License: MIT. -[![NPM Stats](https://nodei.co/npm/iconv-lite.png?downloads=true&downloadRank=true)](https://npmjs.org/packages/iconv-lite/) +[![NPM Stats](https://nodei.co/npm/iconv-lite.png)](https://npmjs.org/package/iconv-lite/) +[![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) +[![npm](https://img.shields.io/npm/v/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) +[![npm downloads](https://img.shields.io/npm/dm/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) +[![npm bundle size](https://img.shields.io/bundlephobia/min/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) ## Usage ### Basic API ```javascript var iconv = require('iconv-lite'); -// Convert from an encoded buffer to js string. +// Convert from an encoded buffer to a js string. str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); -// Convert from js string to an encoded buffer. +// Convert from a js string to an encoded buffer. buf = iconv.encode("Sample input string", 'win1251'); // Check if encoding is supported iconv.encodingExists("us-ascii") ``` -### Streaming API (Node v0.10+) +### Streaming API ```javascript -// Decode stream (from binary stream to js strings) +// Decode stream (from binary data stream to js strings) http.createServer(function(req, res) { var converterStream = iconv.decodeStream('win1251'); req.pipe(converterStream); @@ -57,44 +59,10 @@ http.createServer(function(req, res) { }); ``` -### [Deprecated] Extend Node.js own encodings -> NOTE: This doesn't work on latest Node versions. See [details](https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility). - -```javascript -// After this call all Node basic primitives will understand iconv-lite encodings. -iconv.extendNodeEncodings(); - -// Examples: -buf = new Buffer(str, 'win1251'); -buf.write(str, 'gbk'); -str = buf.toString('latin1'); -assert(Buffer.isEncoding('iso-8859-15')); -Buffer.byteLength(str, 'us-ascii'); - -http.createServer(function(req, res) { - req.setEncoding('big5'); - req.collect(function(err, body) { - console.log(body); - }); -}); - -fs.createReadStream("file.txt", "shift_jis"); - -// External modules are also supported (if they use Node primitives, which they probably do). -request = require('request'); -request({ - url: "http://github.com/", - encoding: "cp932" -}); - -// To remove extensions -iconv.undoExtendNodeEncodings(); -``` - ## Supported encodings * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap. + * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. Aliases like 'latin1', 'us-ascii' also supported. @@ -133,6 +101,12 @@ smart about endianness in the following ways: overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. +## UTF-32 Encodings + +This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. + * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. + * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) + ## Other notes When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). diff --git a/mcp/node_modules/iconv-lite/encodings/dbcs-codec.js b/mcp/node_modules/iconv-lite/encodings/dbcs-codec.js index 1fe3e16..fa83917 100644 --- a/mcp/node_modules/iconv-lite/encodings/dbcs-codec.js +++ b/mcp/node_modules/iconv-lite/encodings/dbcs-codec.js @@ -49,6 +49,48 @@ function DBCSCodec(codecOptions, iconv) { for (var i = 0; i < mappingTable.length; i++) this._addDecodeChunk(mappingTable[i]); + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === 'function') { + this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. + + // Add GB18030 common decode nodes. + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + // Fill out the tree + var firstByteNode = this.decodeTables[0]; + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; + for (var j = 0x30; j <= 0x39; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 0x81; k <= 0xFE; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 0x30; l <= 0x39; l++) { + if (fourthByteNode[l] === UNASSIGNED) + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + this.defaultCharUnicode = iconv.defaultCharUnicode; @@ -92,30 +134,6 @@ function DBCSCodec(codecOptions, iconv) { this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); - - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 decode tables. - var thirdByteNodeIdx = this.decodeTables.length; - var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - var fourthByteNodeIdx = this.decodeTables.length; - var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; - var secondByteNode = this.decodeTables[secondByteNodeIdx]; - for (var j = 0x30; j <= 0x39; j++) - secondByteNode[j] = NODE_START - thirdByteNodeIdx; - } - for (var i = 0x81; i <= 0xFE; i++) - thirdByteNode[i] = NODE_START - fourthByteNodeIdx; - for (var i = 0x30; i <= 0x39; i++) - fourthByteNode[i] = GB18030_CODE - } } DBCSCodec.prototype.encoder = DBCSEncoder; @@ -124,7 +142,7 @@ DBCSCodec.prototype.decoder = DBCSDecoder; // Decoder helpers DBCSCodec.prototype._getDecodeTrieNode = function(addr) { var bytes = []; - for (; addr > 0; addr >>= 8) + for (; addr > 0; addr >>>= 8) bytes.push(addr & 0xFF); if (bytes.length == 0) bytes.push(0); @@ -249,19 +267,32 @@ DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; for (var i = 0; i < 0x100; i++) { var uCode = node[i]; var mbCode = prefix + i; if (skipEncodeChars[mbCode]) continue; - if (uCode >= 0) + if (uCode >= 0) { this._setEncodeChar(uCode, mbCode); - else if (uCode <= NODE_START) - this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); - else if (uCode <= SEQ_START) + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). + var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) + hasValues = true; + else + subNodeEmpty[subNodeIdx] = true; + } + } else if (uCode <= SEQ_START) { this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } } + return hasValues; } @@ -388,10 +419,15 @@ DBCSEncoder.prototype.write = function(str) { newBuf[j++] = dbcsCode >> 8; // high byte newBuf[j++] = dbcsCode & 0xFF; // low byte } - else { + else if (dbcsCode < 0x1000000) { newBuf[j++] = dbcsCode >> 16; newBuf[j++] = (dbcsCode >> 8) & 0xFF; newBuf[j++] = dbcsCode & 0xFF; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = (dbcsCode >>> 16) & 0xFF; + newBuf[j++] = (dbcsCode >>> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; } } @@ -440,7 +476,7 @@ DBCSEncoder.prototype.findIdx = findIdx; function DBCSDecoder(options, codec) { // Decoder state this.nodeIdx = 0; - this.prevBuf = Buffer.alloc(0); + this.prevBytes = []; // Static data this.decodeTables = codec.decodeTables; @@ -452,15 +488,12 @@ function DBCSDecoder(options, codec) { DBCSDecoder.prototype.write = function(buf) { var newBuf = Buffer.alloc(buf.length*2), nodeIdx = this.nodeIdx, - prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, - seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. + prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, + seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. uCode; - if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. - prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; + var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; // Lookup in current trie node. var uCode = this.decodeTables[nodeIdx][curByte]; @@ -470,13 +503,18 @@ DBCSDecoder.prototype.write = function(buf) { } else if (uCode === UNASSIGNED) { // Unknown char. // TODO: Callback with seq. - //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). uCode = this.defaultCharUnicode.charCodeAt(0); + i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. } else if (uCode === GB18030_CODE) { - var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); + if (i >= 3) { + var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); + } else { + var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + + (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + + (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + + (curByte-0x30); + } var idx = findIdx(this.gb18030.gbChars, ptr); uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; } @@ -497,13 +535,13 @@ DBCSDecoder.prototype.write = function(buf) { throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode > 0xFFFF) { + if (uCode >= 0x10000) { uCode -= 0x10000; - var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); + var uCodeLead = 0xD800 | (uCode >> 10); newBuf[j++] = uCodeLead & 0xFF; newBuf[j++] = uCodeLead >> 8; - uCode = 0xDC00 + uCode % 0x400; + uCode = 0xDC00 | (uCode & 0x3FF); } newBuf[j++] = uCode & 0xFF; newBuf[j++] = uCode >> 8; @@ -513,7 +551,10 @@ DBCSDecoder.prototype.write = function(buf) { } this.nodeIdx = nodeIdx; - this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); + this.prevBytes = (seqStart >= 0) + ? Array.prototype.slice.call(buf, seqStart) + : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + return newBuf.slice(0, j).toString('ucs2'); } @@ -521,18 +562,19 @@ DBCSDecoder.prototype.end = function() { var ret = ''; // Try to parse all remaining chars. - while (this.prevBuf.length > 0) { + while (this.prevBytes.length > 0) { // Skip 1 character in the buffer. ret += this.defaultCharUnicode; - var buf = this.prevBuf.slice(1); + var bytesArr = this.prevBytes.slice(1); // Parse remaining as usual. - this.prevBuf = Buffer.alloc(0); + this.prevBytes = []; this.nodeIdx = 0; - if (buf.length > 0) - ret += this.write(buf); + if (bytesArr.length > 0) + ret += this.write(bytesArr); } + this.prevBytes = []; this.nodeIdx = 0; return ret; } @@ -544,7 +586,7 @@ function findIdx(table, val) { var l = 0, r = table.length; while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + Math.floor((r-l+1)/2); + var mid = l + ((r-l+1) >> 1); if (table[mid] <= val) l = mid; else diff --git a/mcp/node_modules/iconv-lite/encodings/dbcs-data.js b/mcp/node_modules/iconv-lite/encodings/dbcs-data.js index 4b61914..0d17e58 100644 --- a/mcp/node_modules/iconv-lite/encodings/dbcs-data.js +++ b/mcp/node_modules/iconv-lite/encodings/dbcs-data.js @@ -167,7 +167,19 @@ module.exports = { 'big5hkscs': { type: '_dbcs', table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [0xa2cc], + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, + 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, + 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, + 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, + 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, + + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, + ], }, 'cnbig5': 'big5hkscs', diff --git a/mcp/node_modules/iconv-lite/encodings/index.js b/mcp/node_modules/iconv-lite/encodings/index.js index e304003..d95c244 100644 --- a/mcp/node_modules/iconv-lite/encodings/index.js +++ b/mcp/node_modules/iconv-lite/encodings/index.js @@ -4,6 +4,7 @@ // We support Browserify by skipping automatic module discovery and requiring modules directly. var modules = [ require("./internal"), + require("./utf32"), require("./utf16"), require("./utf7"), require("./sbcs-codec"), @@ -13,7 +14,7 @@ var modules = [ require("./dbcs-data"), ]; -// Put all encoding/alias/codec definitions to single object and export it. +// Put all encoding/alias/codec definitions to single object and export it. for (var i = 0; i < modules.length; i++) { var module = modules[i]; for (var enc in module) diff --git a/mcp/node_modules/iconv-lite/encodings/internal.js b/mcp/node_modules/iconv-lite/encodings/internal.js index 05ce38b..dc1074f 100644 --- a/mcp/node_modules/iconv-lite/encodings/internal.js +++ b/mcp/node_modules/iconv-lite/encodings/internal.js @@ -53,10 +53,20 @@ if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. function InternalDecoder(options, codec) { - StringDecoder.call(this, codec.enc); + this.decoder = new StringDecoder(codec.enc); } -InternalDecoder.prototype = StringDecoder.prototype; +InternalDecoder.prototype.write = function(buf) { + if (!Buffer.isBuffer(buf)) { + buf = Buffer.from(buf); + } + + return this.decoder.write(buf); +} + +InternalDecoder.prototype.end = function() { + return this.decoder.end(); +} //------------------------------------------------------------------------------ diff --git a/mcp/node_modules/iconv-lite/encodings/sbcs-data.js b/mcp/node_modules/iconv-lite/encodings/sbcs-data.js index fdb81a3..066f904 100644 --- a/mcp/node_modules/iconv-lite/encodings/sbcs-data.js +++ b/mcp/node_modules/iconv-lite/encodings/sbcs-data.js @@ -22,6 +22,11 @@ module.exports = { "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ””â”Žâ”Źâ”œâ”€â”Œâ•Łâ•‘â•šâ•”â•©â•Šâ• â•â•Źâ”â–‘â–’â–“â”‚â”€â„–Â§â•—â•â”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " }, + "cp720": { + "type": "_sbcs", + "chars": "\x80\x81éù\x84Ă \x86çĂȘëÚïß\x8d\x8e\x8f\x90\u0651\u0652ĂŽÂ€Ù€Ă»Ăčۥ۹ۣۀ£ۄۊۧۚ۩ŰȘ۫ۏۭ۟ۯ۰۱ŰČŰłŰŽŰ”Â«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ű¶Ű·ŰžŰčŰșÙÂ”Ù‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠâ‰Ą\u064b\u064c\u064d\u064e\u064f\u0650â‰ˆÂ°âˆ™Â·âˆšâżÂČ■\u00a0" + }, + // Aliases of generated encodings. "ascii8bit": "ascii", "usascii": "ascii", diff --git a/mcp/node_modules/iconv-lite/encodings/tables/gbk-added.json b/mcp/node_modules/iconv-lite/encodings/tables/gbk-added.json index 8abfa9f..b742e36 100644 --- a/mcp/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ b/mcp/node_modules/iconv-lite/encodings/tables/gbk-added.json @@ -27,7 +27,7 @@ ["a7c2","",14], ["a7f2","",12], ["a896","",10], -["a8bc",""], +["a8bc","ážż"], ["a8bf","Çč"], ["a8c1",""], ["a8ea","",20], @@ -51,5 +51,6 @@ ["fca1","",93], ["fda1","",93], ["fe50","âșî –î —î ˜âș„㑳㑇âșˆâș‹î žă–žă˜šă˜ŽâșŒâș—ă„źă€˜î Šă§ă§Ÿă©łă§î «î Źă­Žă±źăł âș§î ±î ČâșȘ䁖䅟âșźäŒ·âșłâș¶âș·î »äŽ±äŽŹâș»ää“–ä™Ąä™ŒîĄƒ"], -["fe80","äœŁäœ©äŒäžâ»Šä„‡ä„șä„œäŠ‚äŠƒäŠ…äŠ†äŠŸäŠ›äŠ·äŠ¶îĄ”îĄ•äČŁäȟäČ äČĄä±·äȱ䮓",6,"䶟",93] +["fe80","äœŁäœ©äŒäžâ»Šä„‡ä„șä„œäŠ‚äŠƒäŠ…äŠ†äŠŸäŠ›äŠ·äŠ¶îĄ”îĄ•äČŁäȟäČ äČĄä±·äȱ䮓",6,"䶟",93], +["8135f437",""] ] diff --git a/mcp/node_modules/iconv-lite/encodings/utf16.js b/mcp/node_modules/iconv-lite/encodings/utf16.js index 54765ae..97d0669 100644 --- a/mcp/node_modules/iconv-lite/encodings/utf16.js +++ b/mcp/node_modules/iconv-lite/encodings/utf16.js @@ -61,6 +61,7 @@ Utf16BEDecoder.prototype.write = function(buf) { } Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; } @@ -103,8 +104,8 @@ Utf16Encoder.prototype.end = function() { function Utf16Decoder(options, codec) { this.decoder = null; - this.initialBytes = []; - this.initialBytesLen = 0; + this.initialBufs = []; + this.initialBufsLen = 0; this.options = options || {}; this.iconv = codec.iconv; @@ -113,17 +114,22 @@ function Utf16Decoder(options, codec) { Utf16Decoder.prototype.write = function(buf) { if (!this.decoder) { // Codec is not chosen yet. Accumulate initial bytes. - this.initialBytes.push(buf); - this.initialBytesLen += buf.length; + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; - if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) + if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) return ''; // We have enough bytes -> detect endianness. - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); - this.initialBytes.length = this.initialBytesLen = 0; + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; } return this.decoder.write(buf); @@ -131,47 +137,61 @@ Utf16Decoder.prototype.write = function(buf) { Utf16Decoder.prototype.end = function() { if (!this.decoder) { - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); - var res = this.decoder.write(buf), - trail = this.decoder.end(); + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); - return trail ? (res + trail) : res; + var trail = this.decoder.end(); + if (trail) + resStr += trail; + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; } return this.decoder.end(); } -function detectEncoding(buf, defaultEncoding) { - var enc = defaultEncoding || 'utf-16le'; +function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. - if (buf.length >= 2) { - // Check BOM. - if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM - enc = 'utf-16be'; - else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM - enc = 'utf-16le'; - else { - // No BOM found. Try to deduce encoding from initial content. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions - _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; + if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; + } - for (var i = 0; i < _len; i += 2) { - if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; - if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + + b.length = 0; + charsProcessed++; + + if (charsProcessed >= 100) { + break outer_loop; + } } - - if (asciiCharsBE > asciiCharsLE) - enc = 'utf-16be'; - else if (asciiCharsBE < asciiCharsLE) - enc = 'utf-16le'; } } - return enc; + // Make decisions. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; + if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || 'utf-16le'; } diff --git a/mcp/node_modules/iconv-lite/encodings/utf7.js b/mcp/node_modules/iconv-lite/encodings/utf7.js index b7631c2..eacae34 100644 --- a/mcp/node_modules/iconv-lite/encodings/utf7.js +++ b/mcp/node_modules/iconv-lite/encodings/utf7.js @@ -74,7 +74,7 @@ Utf7Decoder.prototype.write = function(buf) { if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" res += "+"; } else { - var b64str = base64Accum + buf.slice(lastI, i).toString(); + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); } @@ -91,7 +91,7 @@ Utf7Decoder.prototype.write = function(buf) { if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. } else { - var b64str = base64Accum + buf.slice(lastI).toString(); + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. @@ -245,7 +245,7 @@ Utf7IMAPDecoder.prototype.write = function(buf) { if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" res += "&"; } else { - var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); } @@ -262,7 +262,7 @@ Utf7IMAPDecoder.prototype.write = function(buf) { if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. } else { - var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. diff --git a/mcp/node_modules/iconv-lite/lib/extend-node.js b/mcp/node_modules/iconv-lite/lib/extend-node.js deleted file mode 100644 index 87f5394..0000000 --- a/mcp/node_modules/iconv-lite/lib/extend-node.js +++ /dev/null @@ -1,217 +0,0 @@ -"use strict"; -var Buffer = require("buffer").Buffer; -// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer - -// == Extend Node primitives to use iconv-lite ================================= - -module.exports = function (iconv) { - var original = undefined; // Place to keep original methods. - - // Node authors rewrote Buffer internals to make it compatible with - // Uint8Array and we cannot patch key functions since then. - // Note: this does use older Buffer API on a purpose - iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array); - - iconv.extendNodeEncodings = function extendNodeEncodings() { - if (original) return; - original = {}; - - if (!iconv.supportsNodeEncodingsExtension) { - console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); - console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); - return; - } - - var nodeNativeEncodings = { - 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, - 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, - }; - - Buffer.isNativeEncoding = function(enc) { - return enc && nodeNativeEncodings[enc.toLowerCase()]; - } - - // -- SlowBuffer ----------------------------------------------------------- - var SlowBuffer = require('buffer').SlowBuffer; - - original.SlowBufferToString = SlowBuffer.prototype.toString; - SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferToString.call(this, encoding, start, end); - - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } - - original.SlowBufferWrite = SlowBuffer.prototype.write; - SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferWrite.call(this, string, offset, length, encoding); - - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); - - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - } - - // -- Buffer --------------------------------------------------------------- - - original.BufferIsEncoding = Buffer.isEncoding; - Buffer.isEncoding = function(encoding) { - return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); - } - - original.BufferByteLength = Buffer.byteLength; - Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferByteLength.call(this, str, encoding); - - // Slow, I know, but we don't have a better way yet. - return iconv.encode(str, encoding).length; - } - - original.BufferToString = Buffer.prototype.toString; - Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferToString.call(this, encoding, start, end); - - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } - - original.BufferWrite = Buffer.prototype.write; - Buffer.prototype.write = function(string, offset, length, encoding) { - var _offset = offset, _length = length, _encoding = encoding; - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferWrite.call(this, string, _offset, _length, _encoding); - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); - - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - - // TODO: Set _charsWritten. - } - - - // -- Readable ------------------------------------------------------------- - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; - - original.ReadableSetEncoding = Readable.prototype.setEncoding; - Readable.prototype.setEncoding = function setEncoding(enc, options) { - // Use our own decoder, it has the same interface. - // We cannot use original function as it doesn't handle BOM-s. - this._readableState.decoder = iconv.getDecoder(enc, options); - this._readableState.encoding = enc; - } - - Readable.prototype.collect = iconv._collect; - } - } - - // Remove iconv-lite Node primitive extensions. - iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { - if (!iconv.supportsNodeEncodingsExtension) - return; - if (!original) - throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") - - delete Buffer.isNativeEncoding; - - var SlowBuffer = require('buffer').SlowBuffer; - - SlowBuffer.prototype.toString = original.SlowBufferToString; - SlowBuffer.prototype.write = original.SlowBufferWrite; - - Buffer.isEncoding = original.BufferIsEncoding; - Buffer.byteLength = original.BufferByteLength; - Buffer.prototype.toString = original.BufferToString; - Buffer.prototype.write = original.BufferWrite; - - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; - - Readable.prototype.setEncoding = original.ReadableSetEncoding; - delete Readable.prototype.collect; - } - - original = undefined; - } -} diff --git a/mcp/node_modules/iconv-lite/lib/index.d.ts b/mcp/node_modules/iconv-lite/lib/index.d.ts index 0547eb3..99f200f 100644 --- a/mcp/node_modules/iconv-lite/lib/index.d.ts +++ b/mcp/node_modules/iconv-lite/lib/index.d.ts @@ -6,15 +6,22 @@ *--------------------------------------------------------------------------------------------*/ declare module 'iconv-lite' { + // Basic API export function decode(buffer: Buffer, encoding: string, options?: Options): string; export function encode(content: string, encoding: string, options?: Options): Buffer; export function encodingExists(encoding: string): boolean; + // Stream API export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; + + // Low-level stream APIs + export function getEncoder(encoding: string, options?: Options): EncoderStream; + + export function getDecoder(encoding: string, options?: Options): DecoderStream; } export interface Options { @@ -22,3 +29,13 @@ export interface Options { addBOM?: boolean; defaultEncoding?: string; } + +export interface EncoderStream { + write(str: string): Buffer; + end(): Buffer | undefined; +} + +export interface DecoderStream { + write(buf: Buffer): string; + end(): string | undefined; +} diff --git a/mcp/node_modules/iconv-lite/lib/index.js b/mcp/node_modules/iconv-lite/lib/index.js index 5391919..657701c 100644 --- a/mcp/node_modules/iconv-lite/lib/index.js +++ b/mcp/node_modules/iconv-lite/lib/index.js @@ -1,7 +1,5 @@ "use strict"; -// Some environments don't have global Buffer (e.g. React Native). -// Solution would be installing npm modules "buffer" and "stream" explicitly. var Buffer = require("safer-buffer").Buffer; var bomHandling = require("./bom-handling"), @@ -133,21 +131,50 @@ iconv.getDecoder = function getDecoder(encoding, options) { return decoder; } +// Streaming API +// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add +// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. +// If you would like to enable it explicitly, please add the following code to your app: +// > iconv.enableStreamingAPI(require('stream')); +iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { + if (iconv.supportsStreams) + return; -// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. -var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; -if (nodeVer) { + // Dependency-inject stream module to create IconvLite stream classes. + var streams = require("./streams")(stream_module); - // Load streaming support in Node v0.10+ - var nodeVerArr = nodeVer.split(".").map(Number); - if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { - require("./streams")(iconv); + // Not public API yet, but expose the stream classes. + iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + + // Streaming API. + iconv.encodeStream = function encodeStream(encoding, options) { + return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); } - // Load Node primitive extensions. - require("./extend-node")(iconv); + iconv.decodeStream = function decodeStream(encoding, options) { + return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + } + + iconv.supportsStreams = true; +} + +// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). +var stream_module; +try { + stream_module = require("stream"); +} catch (e) {} + +if (stream_module && stream_module.Transform) { + iconv.enableStreamingAPI(stream_module); + +} else { + // In rare cases where 'stream' module is not available by default, throw a helpful exception. + iconv.encodeStream = iconv.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; } if ("Ā" != "\u0100") { - console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); } diff --git a/mcp/node_modules/iconv-lite/lib/streams.js b/mcp/node_modules/iconv-lite/lib/streams.js index 4409552..a150648 100644 --- a/mcp/node_modules/iconv-lite/lib/streams.js +++ b/mcp/node_modules/iconv-lite/lib/streams.js @@ -1,121 +1,109 @@ "use strict"; -var Buffer = require("buffer").Buffer, - Transform = require("stream").Transform; +var Buffer = require("safer-buffer").Buffer; +// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), +// we opt to dependency-inject it instead of creating a hard dependency. +module.exports = function(stream_module) { + var Transform = stream_module.Transform; -// == Exports ================================================================== -module.exports = function(iconv) { - - // Additional Public API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + // == Encoder stream ======================================================= + + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; // We accept only strings, so we don't need to decode them. + Transform.call(this, options); } - iconv.decodeStream = function decodeStream(encoding, options) { - return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != 'string') + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } } - iconv.supportsStreams = true; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on('error', cb); + this.on('data', function(chunk) { chunks.push(chunk); }); + this.on('end', function() { + cb(null, Buffer.concat(chunks)); + }); + return this; + } - // Not published yet. - iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; - iconv._collect = IconvLiteDecoderStream.prototype.collect; + // == Decoder stream ======================================================= + + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = 'utf8'; // We output strings. + Transform.call(this, options); + } + + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ''; + this.on('error', cb); + this.on('data', function(chunk) { res += chunk; }); + this.on('end', function() { + cb(null, res); + }); + return this; + } + + return { + IconvLiteEncoderStream: IconvLiteEncoderStream, + IconvLiteDecoderStream: IconvLiteDecoderStream, + }; }; - - -// == Encoder stream ======================================================= -function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); -} - -IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } -}); - -IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; -} - - -// == Decoder stream ======================================================= -function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); -} - -IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } -}); - -IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; -} - diff --git a/mcp/node_modules/iconv-lite/package.json b/mcp/node_modules/iconv-lite/package.json index a7c74fc..d351115 100644 --- a/mcp/node_modules/iconv-lite/package.json +++ b/mcp/node_modules/iconv-lite/package.json @@ -1,7 +1,7 @@ { "name": "iconv-lite", "description": "Convert character encodings in pure javascript.", - "version": "0.4.24", + "version": "0.6.3", "license": "MIT", "keywords": [ "iconv", @@ -22,25 +22,23 @@ "node": ">=0.10.0" }, "scripts": { - "coverage": "istanbul cover _mocha -- --grep .", - "coverage-open": "open coverage/lcov-report/index.html", + "coverage": "c8 _mocha --grep .", "test": "mocha --reporter spec --grep ." }, "browser": { - "./lib/extend-node": false, - "./lib/streams": false + "stream": false }, "devDependencies": { - "mocha": "^3.1.0", - "request": "~2.87.0", - "unorm": "*", - "errto": "*", - "async": "*", - "istanbul": "*", - "semver": "*", - "iconv": "*" + "async": "^3.2.0", + "c8": "^7.2.0", + "errto": "^0.2.1", + "iconv": "^2.3.5", + "mocha": "^3.5.3", + "request": "^2.88.2", + "semver": "^6.3.0", + "unorm": "^1.6.0" }, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } } diff --git a/mcp/node_modules/media-typer/HISTORY.md b/mcp/node_modules/media-typer/HISTORY.md index 62c2003..538ade1 100644 --- a/mcp/node_modules/media-typer/HISTORY.md +++ b/mcp/node_modules/media-typer/HISTORY.md @@ -1,3 +1,31 @@ +1.1.0 / 2019-04-24 +================== + + * Add `test(string)` function + +1.0.2 / 2019-04-19 +================== + + * Fix JSDoc comment for `parse` function + +1.0.1 / 2018-10-20 +================== + + * Remove left over `parameters` property from class + +1.0.0 / 2018-10-20 +================== + +This major release brings the module back to it's RFC 6838 roots. If you want +a module to parse the `Content-Type` or similar HTTP headers, use the +`content-type` module instead. + + * Drop support for Node.js below 0.8 + * Remove parameter handling, which is outside RFC 6838 scope + * Remove `parse(req)` and `parse(res)` signatures + * perf: enable strict mode + * perf: use a class for object creation + 0.3.0 / 2014-09-07 ================== diff --git a/mcp/node_modules/media-typer/LICENSE b/mcp/node_modules/media-typer/LICENSE index b7dce6c..84441fb 100644 --- a/mcp/node_modules/media-typer/LICENSE +++ b/mcp/node_modules/media-typer/LICENSE @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2014 Douglas Christopher Wilson +Copyright (c) 2014-2017 Douglas Christopher Wilson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/mcp/node_modules/media-typer/README.md b/mcp/node_modules/media-typer/README.md index d8df623..37edad1 100644 --- a/mcp/node_modules/media-typer/README.md +++ b/mcp/node_modules/media-typer/README.md @@ -1,29 +1,45 @@ # media-typer -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] [![Node.js Version][node-version-image]][node-version-url] [![Build Status][travis-image]][travis-url] [![Test Coverage][coveralls-image]][coveralls-url] -Simple RFC 6838 media type parser +Simple RFC 6838 media type parser. + +This module will parse a given media type into it's component parts, like type, +subtype, and suffix. A formatter is also provided to put them back together and +the two can be combined to normalize media types into a canonical form. + +If you are looking to parse the string that represents a media type and it's +parameters in HTTP (for example, the `Content-Type` header), use the +[content-type module](https://www.npmjs.com/package/content-type). ## Installation +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + ```sh $ npm install media-typer ``` ## API + + ```js var typer = require('media-typer') ``` ### typer.parse(string) + + ```js -var obj = typer.parse('image/svg+xml; charset=utf-8') +var obj = typer.parse('image/svg+xml') ``` Parse a media type string. This will return an object with the following @@ -35,47 +51,43 @@ properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` - - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}` - -### typer.parse(req) - -```js -var obj = typer.parse(req) -``` - -Parse the `content-type` header from the given `req`. Short-cut for -`typer.parse(req.headers['content-type'])`. - -### typer.parse(res) - -```js -var obj = typer.parse(res) -``` - -Parse the `content-type` header set on the given `res`. Short-cut for -`typer.parse(res.getHeader('content-type'))`. +If the given type string is invalid, then a `TypeError` is thrown. ### typer.format(obj) + + ```js -var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'}) +var obj = typer.format({ type: 'image', subtype: 'svg', suffix: 'xml' }) ``` Format an object into a media type string. This will return a string of the mime type for the given object. For the properties of the object, see the documentation for `typer.parse(string)`. +If any of the given object values are invalid, then a `TypeError` is thrown. + +### typer.test(string) + + + +```js +var valid = typer.test('image/svg+xml') +``` + +Validate a media type string. This will return `true` is the string is a well- +formatted media type, or `false` otherwise. + ## License [MIT](LICENSE) -[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/media-typer/master +[coveralls-url]: https://coveralls.io/r/jshttp/media-typer?branch=master +[node-version-image]: https://badgen.net/npm/node/media-typer +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/media-typer [npm-url]: https://npmjs.org/package/media-typer -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat +[npm-version-image]: https://badgen.net/npm/v/media-typer +[travis-image]: https://badgen.net/travis/jshttp/media-typer/master [travis-url]: https://travis-ci.org/jshttp/media-typer -[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/media-typer -[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat -[downloads-url]: https://npmjs.org/package/media-typer diff --git a/mcp/node_modules/media-typer/index.js b/mcp/node_modules/media-typer/index.js index 07f7295..897cae1 100644 --- a/mcp/node_modules/media-typer/index.js +++ b/mcp/node_modules/media-typer/index.js @@ -1,48 +1,10 @@ /*! * media-typer - * Copyright(c) 2014 Douglas Christopher Wilson + * Copyright(c) 2014-2017 Douglas Christopher Wilson * MIT Licensed */ -/** - * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7 - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * SHT = - * CTL = - * OCTET = - */ -var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; -var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/ -var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - */ -var qescRegExp = /\\([\u0000-\u007f])/g; - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - */ -var quoteRegExp = /([\\"])/g; +'use strict' /** * RegExp to match type in RFC 6838 @@ -60,9 +22,9 @@ var quoteRegExp = /([\\"])/g; * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z * DIGIT = %x30-39 ; 0-9 */ -var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ -var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ -var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; +var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ +var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ +var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/ /** * Module exports. @@ -70,30 +32,30 @@ var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z exports.format = format exports.parse = parse +exports.test = test /** * Format object to media type. * * @param {object} obj * @return {string} - * @api public + * @public */ -function format(obj) { +function format (obj) { if (!obj || typeof obj !== 'object') { throw new TypeError('argument obj is required') } - var parameters = obj.parameters var subtype = obj.subtype var suffix = obj.suffix var type = obj.type - if (!type || !typeNameRegExp.test(type)) { + if (!type || !TYPE_NAME_REGEXP.test(type)) { throw new TypeError('invalid type') } - if (!subtype || !subtypeNameRegExp.test(subtype)) { + if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { throw new TypeError('invalid subtype') } @@ -102,148 +64,54 @@ function format(obj) { // append +suffix if (suffix) { - if (!typeNameRegExp.test(suffix)) { + if (!TYPE_NAME_REGEXP.test(suffix)) { throw new TypeError('invalid suffix') } string += '+' + suffix } - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - if (!tokenRegExp.test(param)) { - throw new TypeError('invalid parameter name') - } - - string += '; ' + param + '=' + qstring(parameters[param]) - } - } - return string } /** - * Parse media type to object. + * Test media type. * - * @param {string|object} string - * @return {Object} - * @api public + * @param {string} string + * @return {object} + * @public */ -function parse(string) { +function test (string) { if (!string) { throw new TypeError('argument string is required') } - // support req/res-like objects as argument - if (typeof string === 'object') { - string = getcontenttype(string) - } - if (typeof string !== 'string') { throw new TypeError('argument string is required to be a string') } - var index = string.indexOf(';') - var type = index !== -1 - ? string.substr(0, index) - : string - - var key - var match - var obj = splitType(type) - var params = {} - var value - - paramRegExp.lastIndex = index - - while (match = paramRegExp.exec(string)) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(qescRegExp, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - obj.parameters = params - - return obj + return TYPE_REGEXP.test(string.toLowerCase()) } /** - * Get content-type from req/res objects. - * - * @param {object} - * @return {Object} - * @api private - */ - -function getcontenttype(obj) { - if (typeof obj.getHeader === 'function') { - // res-like - return obj.getHeader('content-type') - } - - if (typeof obj.headers === 'object') { - // req-like - return obj.headers && obj.headers['content-type'] - } -} - -/** - * Quote a string if necessary. - * - * @param {string} val - * @return {string} - * @api private - */ - -function qstring(val) { - var str = String(val) - - // no need to quote tokens - if (tokenRegExp.test(str)) { - return str - } - - if (str.length > 0 && !textRegExp.test(str)) { - throw new TypeError('invalid parameter value') - } - - return '"' + str.replace(quoteRegExp, '\\$1') + '"' -} - -/** - * Simply "type/subtype+siffx" into parts. + * Parse media type to object. * * @param {string} string - * @return {Object} - * @api private + * @return {object} + * @public */ -function splitType(string) { - var match = typeRegExp.exec(string.toLowerCase()) +function parse (string) { + if (!string) { + throw new TypeError('argument string is required') + } + + if (typeof string !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + var match = TYPE_REGEXP.exec(string.toLowerCase()) if (!match) { throw new TypeError('invalid media type') @@ -260,11 +128,16 @@ function splitType(string) { subtype = subtype.substr(0, index) } - var obj = { - type: type, - subtype: subtype, - suffix: suffix - } - - return obj + return new MediaType(type, subtype, suffix) +} + +/** + * Class for MediaType object. + * @public + */ + +function MediaType (type, subtype, suffix) { + this.type = type + this.subtype = subtype + this.suffix = suffix } diff --git a/mcp/node_modules/media-typer/package.json b/mcp/node_modules/media-typer/package.json index 8cf3ebc..1dca712 100644 --- a/mcp/node_modules/media-typer/package.json +++ b/mcp/node_modules/media-typer/package.json @@ -1,14 +1,20 @@ { "name": "media-typer", "description": "Simple RFC 6838 media type parser and formatter", - "version": "0.3.0", + "version": "1.1.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "jshttp/media-typer", "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "should": "~4.0.4" + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.17.2", + "eslint-plugin-markdown": "1.0.0", + "eslint-plugin-node": "8.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "6.1.4", + "nyc": "14.0.0" }, "files": [ "LICENSE", @@ -16,11 +22,12 @@ "index.js" ], "engines": { - "node": ">= 0.6" + "node": ">= 0.8" }, "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test" } } diff --git a/mcp/node_modules/merge-descriptors/HISTORY.md b/mcp/node_modules/merge-descriptors/HISTORY.md deleted file mode 100644 index 486771f..0000000 --- a/mcp/node_modules/merge-descriptors/HISTORY.md +++ /dev/null @@ -1,21 +0,0 @@ -1.0.1 / 2016-01-17 -================== - - * perf: enable strict mode - -1.0.0 / 2015-03-01 -================== - - * Add option to only add new descriptors - * Add simple argument validation - * Add jsdoc to source file - -0.0.2 / 2013-12-14 -================== - - * Move repository to `component` organization - -0.0.1 / 2013-10-29 -================== - - * Initial release diff --git a/mcp/node_modules/merge-descriptors/LICENSE b/mcp/node_modules/merge-descriptors/LICENSE index 274bfd8..c509d45 100644 --- a/mcp/node_modules/merge-descriptors/LICENSE +++ b/mcp/node_modules/merge-descriptors/LICENSE @@ -1,23 +1,11 @@ -(The MIT License) +MIT License -Copyright (c) 2013 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson +Copyright (c) Jonathan Ong +Copyright (c) Douglas Christopher Wilson +Copyright (c) Sindre Sorhus (https://sindresorhus.com) -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/merge-descriptors/README.md b/mcp/node_modules/merge-descriptors/README.md index 3403f4a..1dee67d 100644 --- a/mcp/node_modules/merge-descriptors/README.md +++ b/mcp/node_modules/merge-descriptors/README.md @@ -1,49 +1,55 @@ # merge-descriptors -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] +> Merge objects using their property descriptors -Merge objects using descriptors. +## Install + +```sh +npm install merge-descriptors +``` + +## Usage ```js -var thing = { - get name() { - return 'jon' - } +import mergeDescriptors from 'merge-descriptors'; + +const thing = { + get name() { + return 'John' + } } -var animal = { +const animal = {}; -} +mergeDescriptors(animal, thing); -merge(animal, thing) - -animal.name === 'jon' +console.log(animal.name); +//=> 'John' ``` ## API -### merge(destination, source) +### merge(destination, source, overwrite?) -Redefines `destination`'s descriptors with `source`'s. The return value is the -`destination` object. +Merges "own" properties from a source to a destination object, including non-enumerable and accessor-defined properties. It retains original values and descriptors, ensuring the destination receives a complete and accurate copy of the source's properties. -### merge(destination, source, false) +Returns the modified destination object. -Defines `source`'s descriptors on `destination` if `destination` does not have -a descriptor by the same name. The return value is the `destination` object. +#### destination -## License +Type: `object` -[MIT](LICENSE) +The object to receive properties. -[npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg -[npm-url]: https://npmjs.org/package/merge-descriptors -[travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg -[travis-url]: https://travis-ci.org/component/merge-descriptors -[coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg -[coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master -[downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg -[downloads-url]: https://npmjs.org/package/merge-descriptors +#### source + +Type: `object` + +The object providing properties. + +#### overwrite + +Type: `boolean`\ +Default: `true` + +A boolean to control overwriting of existing properties. diff --git a/mcp/node_modules/merge-descriptors/index.js b/mcp/node_modules/merge-descriptors/index.js index f22ebab..51228e5 100644 --- a/mcp/node_modules/merge-descriptors/index.js +++ b/mcp/node_modules/merge-descriptors/index.js @@ -1,60 +1,26 @@ -/*! - * merge-descriptors - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ +'use strict'; -'use strict' +function mergeDescriptors(destination, source, overwrite = true) { + if (!destination) { + throw new TypeError('The `destination` argument is required.'); + } -/** - * Module exports. - * @public - */ + if (!source) { + throw new TypeError('The `source` argument is required.'); + } -module.exports = merge + for (const name of Object.getOwnPropertyNames(source)) { + if (!overwrite && Object.hasOwn(destination, name)) { + // Skip descriptor + continue; + } -/** - * Module variables. - * @private - */ + // Copy descriptor + const descriptor = Object.getOwnPropertyDescriptor(source, name); + Object.defineProperty(destination, name, descriptor); + } -var hasOwnProperty = Object.prototype.hasOwnProperty - -/** - * Merge the property descriptors of `src` into `dest` - * - * @param {object} dest Object to add descriptors to - * @param {object} src Object to clone descriptors from - * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties - * @returns {object} Reference to dest - * @public - */ - -function merge (dest, src, redefine) { - if (!dest) { - throw new TypeError('argument dest is required') - } - - if (!src) { - throw new TypeError('argument src is required') - } - - if (redefine === undefined) { - // Default to true - redefine = true - } - - Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { - if (!redefine && hasOwnProperty.call(dest, name)) { - // Skip descriptor - return - } - - // Copy descriptor - var descriptor = Object.getOwnPropertyDescriptor(src, name) - Object.defineProperty(dest, name, descriptor) - }) - - return dest + return destination; } + +module.exports = mergeDescriptors; diff --git a/mcp/node_modules/merge-descriptors/package.json b/mcp/node_modules/merge-descriptors/package.json index aa9af0a..9bedb25 100644 --- a/mcp/node_modules/merge-descriptors/package.json +++ b/mcp/node_modules/merge-descriptors/package.json @@ -1,39 +1,50 @@ { - "name": "merge-descriptors", - "description": "Merge objects using descriptors", - "version": "1.0.3", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com", - "twitter": "https://twitter.com/jongleberry" - }, - "contributors": [ - "Douglas Christopher Wilson ", - "Mike Grabowski " - ], - "license": "MIT", - "repository": "sindresorhus/merge-descriptors", - "funding": "https://github.com/sponsors/sindresorhus", - "devDependencies": { - "eslint": "5.9.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.14.0", - "eslint-plugin-node": "7.0.1", - "eslint-plugin-promise": "4.0.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "5.2.0", - "nyc": "13.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "scripts": { - "lint": "eslint .", - "test": "mocha test/", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } + "name": "merge-descriptors", + "version": "2.0.0", + "description": "Merge objects using their property descriptors", + "license": "MIT", + "repository": "sindresorhus/merge-descriptors", + "funding": "https://github.com/sponsors/sindresorhus", + "contributors": [ + "Jonathan Ong ", + "Douglas Christopher Wilson ", + "Mike Grabowski ", + "Sindre Sorhus " + ], + "exports": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "main": "./index.js", + "types": "./index.d.ts", + "sideEffects": false, + "engines": { + "node": ">=18" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "merge", + "descriptors", + "object", + "property", + "properties", + "merging", + "getter", + "setter" + ], + "devDependencies": { + "ava": "^5.3.1", + "xo": "^0.56.0" + }, + "xo": { + "rules": { + "unicorn/prefer-module": "off" + } + } } diff --git a/mcp/node_modules/methods/HISTORY.md b/mcp/node_modules/methods/HISTORY.md deleted file mode 100644 index c0ecf07..0000000 --- a/mcp/node_modules/methods/HISTORY.md +++ /dev/null @@ -1,29 +0,0 @@ -1.1.2 / 2016-01-17 -================== - - * perf: enable strict mode - -1.1.1 / 2014-12-30 -================== - - * Improve `browserify` support - -1.1.0 / 2014-07-05 -================== - - * Add `CONNECT` method - -1.0.1 / 2014-06-02 -================== - - * Fix module to work with harmony transform - -1.0.0 / 2014-05-08 -================== - - * Add `PURGE` method - -0.1.0 / 2013-10-28 -================== - - * Add `http.METHODS` support diff --git a/mcp/node_modules/methods/LICENSE b/mcp/node_modules/methods/LICENSE deleted file mode 100644 index 220dc1a..0000000 --- a/mcp/node_modules/methods/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2013-2014 TJ Holowaychuk -Copyright (c) 2015-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/mcp/node_modules/methods/README.md b/mcp/node_modules/methods/README.md deleted file mode 100644 index 672a32b..0000000 --- a/mcp/node_modules/methods/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Methods - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -HTTP verbs that Node.js core's HTTP parser supports. - -This module provides an export that is just like `http.METHODS` from Node.js core, -with the following differences: - - * All method names are lower-cased. - * Contains a fallback list of methods for Node.js versions that do not have a - `http.METHODS` export (0.10 and lower). - * Provides the fallback list when using tools like `browserify` without pulling - in the `http` shim module. - -## Install - -```bash -$ npm install methods -``` - -## API - -```js -var methods = require('methods') -``` - -### methods - -This is an array of lower-cased method names that Node.js supports. If Node.js -provides the `http.METHODS` export, then this is the same array lower-cased, -otherwise it is a snapshot of the verbs from Node.js 0.10. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat -[npm-url]: https://npmjs.org/package/methods -[node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat -[node-version-url]: https://nodejs.org/en/download/ -[travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/methods -[coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master -[downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat -[downloads-url]: https://npmjs.org/package/methods diff --git a/mcp/node_modules/methods/index.js b/mcp/node_modules/methods/index.js deleted file mode 100644 index 667a50b..0000000 --- a/mcp/node_modules/methods/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * methods - * Copyright(c) 2013-2014 TJ Holowaychuk - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var http = require('http'); - -/** - * Module exports. - * @public - */ - -module.exports = getCurrentNodeMethods() || getBasicNodeMethods(); - -/** - * Get the current Node.js methods. - * @private - */ - -function getCurrentNodeMethods() { - return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) { - return method.toLowerCase(); - }); -} - -/** - * Get the "basic" Node.js methods, a snapshot from Node.js 0.10. - * @private - */ - -function getBasicNodeMethods() { - return [ - 'get', - 'post', - 'put', - 'head', - 'delete', - 'options', - 'trace', - 'copy', - 'lock', - 'mkcol', - 'move', - 'purge', - 'propfind', - 'proppatch', - 'unlock', - 'report', - 'mkactivity', - 'checkout', - 'merge', - 'm-search', - 'notify', - 'subscribe', - 'unsubscribe', - 'patch', - 'search', - 'connect' - ]; -} diff --git a/mcp/node_modules/methods/package.json b/mcp/node_modules/methods/package.json deleted file mode 100644 index c4ce6f0..0000000 --- a/mcp/node_modules/methods/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "methods", - "description": "HTTP methods that node supports", - "version": "1.1.2", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)", - "TJ Holowaychuk (http://tjholowaychuk.com)" - ], - "license": "MIT", - "repository": "jshttp/methods", - "devDependencies": { - "istanbul": "0.4.1", - "mocha": "1.21.5" - }, - "files": [ - "index.js", - "HISTORY.md", - "LICENSE" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "browser": { - "http": false - }, - "keywords": [ - "http", - "methods" - ] -} diff --git a/mcp/node_modules/mime-db/HISTORY.md b/mcp/node_modules/mime-db/HISTORY.md index 7436f64..fb35bec 100644 --- a/mcp/node_modules/mime-db/HISTORY.md +++ b/mcp/node_modules/mime-db/HISTORY.md @@ -1,3 +1,37 @@ +1.54.0 / 2025-03-17 +=================== + + * Update mime type for DCM format (#362) + * mark application/octet-stream as compressible (#163) + * Fix typo in application/x-zip-compressed mimetype (#359) + * Add mime-type for Jupyter notebooks (#282) + * Add Google Drive MIME types (#311) + * Add .blend file type (#338) + * Add support for the FBX file extension (#342) + * Add Adobe DNG file (#340) + * Add Procreate Brush and Brush Set file Types (#339) + * Add support for Procreate Dreams (#341) + * replace got with undici (#352) + * Added extensions list for model/step (#293) + * Add m4b as a type of audio/mp4 (#357) + * windows 11 application/x-zip-compressed (#346) + * add dotLottie mime type (#351) + * Add some MS-related extensions and types (#336) + +1.53.0 / 2024-07-12 +=================== + + * Add extension `.sql` to `application/sql` + * Add extensions `.aac` and `.adts` to `audio/aac` + * Add extensions `.js` and `.mjs` to `text/javascript` + * Add extensions for `application/mp4` from IANA + * Add extensions from IANA for more MIME types + * Add Microsoft app installer types and extensions + * Add new upstream MIME types + * Fix extensions for `text/markdown` to match IANA + * Remove extension `.mjs` from `application/javascript` + * Remove obsolete MIME types from IANA data + 1.52.0 / 2022-02-21 =================== @@ -36,7 +70,7 @@ =================== * Add new upstream MIME types - * Remove ambigious extensions from IANA for `application/*+xml` types + * Remove ambiguous extensions from IANA for `application/*+xml` types * Update primary extension to `.es` for `application/ecmascript` 1.46.0 / 2021-02-13 diff --git a/mcp/node_modules/mime-db/README.md b/mcp/node_modules/mime-db/README.md index 5a8fcfe..ee93fa0 100644 --- a/mcp/node_modules/mime-db/README.md +++ b/mcp/node_modules/mime-db/README.md @@ -11,9 +11,9 @@ It consists of a single, public JSON file and does not include any logic, allowing it to remain as un-opinionated as possible with an API. It aggregates data from the following sources: -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types +- https://www.iana.org/assignments/media-types/media-types.xhtml +- https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- https://hg.nginx.org/nginx/raw-file/default/conf/mime.types ## Installation @@ -23,10 +23,7 @@ npm install mime-db ### Database Download -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to -replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) -as the JSON format may change in the future. +If you intend to use this in a web browser, you can conveniently access the JSON file via [jsDelivr](https://www.jsdelivr.com/), a popular CDN (Content Delivery Network). To ensure stability and compatibility, it is advisable to specify [a release tag](https://github.com/jshttp/mime-db/tags) instead of using the 'master' branch. This is because the JSON file's format might change in future updates, and relying on a specific release tag will prevent potential issues arising from these changes. ``` https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json @@ -48,17 +45,42 @@ Each mime type has the following properties: - `.source` - where the mime type is defined. If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) + - `apache` - [Apache common media types](https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](https://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](https://hg.nginx.org/nginx/raw-file/default/conf/mime.types) - `.extensions[]` - known extensions associated with this mime type. - `.compressible` - whether a file of this type can be gzipped. - `.charset` - the default charset associated with this type, if any. If unknown, every property could be `undefined`. +## Note on MIME Type Data and Semver + +This package considers the programmatic api as the semver compatibility. This means the MIME type resolution is *not* considered +in the semver bumps. This means that if you want to pin your `mime-db` data you will need to do it in your application. While +this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is a breaking change. + ## Contributing +The primary way to contribute to this database is by updating the data in +one of the upstream sources. The database is updated from the upstreams +periodically and will pull in any changes. + +### Registering Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](https://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +### Direct Inclusion + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associated with this media type, the source must definitively link the +media type and extension as well. + To edit the database, only make PRs against `src/custom-types.json` or `src/custom-suffix.json`. @@ -76,21 +98,8 @@ keys and the values being an object with the following keys: To update the build, run `npm run build`. -### Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -If that is not possible / feasible, they can be added directly here as a -"custom" type. To do this, it is required to have a primary source that -definitively lists the media type. If an extension is going to be listed as -associateed with this media type, the source must definitively link the -media type and extension as well. - [ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci -[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci +[ci-url]: https://github.com/jshttp/mime-db/actions/workflows/ci.yml [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master [coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master [node-image]: https://badgen.net/npm/node/mime-db diff --git a/mcp/node_modules/mime-db/db.json b/mcp/node_modules/mime-db/db.json index eb9c42c..7e74733 100644 --- a/mcp/node_modules/mime-db/db.json +++ b/mcp/node_modules/mime-db/db.json @@ -25,6 +25,16 @@ "application/ace+cbor": { "source": "iana" }, + "application/ace+json": { + "source": "iana", + "compressible": true + }, + "application/ace-groupcomm+cbor": { + "source": "iana" + }, + "application/ace-trl+cbor": { + "source": "iana" + }, "application/activemessage": { "source": "iana" }, @@ -32,6 +42,21 @@ "source": "iana", "compressible": true }, + "application/aif+cbor": { + "source": "iana" + }, + "application/aif+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdni+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdnifilter+json": { + "source": "iana", + "compressible": true + }, "application/alto-costmap+json": { "source": "iana", "compressible": true @@ -72,6 +97,22 @@ "source": "iana", "compressible": true }, + "application/alto-propmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-propmapparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tips+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tipsparams+json": { + "source": "iana", + "compressible": true + }, "application/alto-updatestreamcontrol+json": { "source": "iana", "compressible": true @@ -87,6 +128,10 @@ "source": "iana", "extensions": ["ez"] }, + "application/appinstaller": { + "compressible": false, + "extensions": ["appinstaller"] + }, "application/applefile": { "source": "iana" }, @@ -94,6 +139,14 @@ "source": "apache", "extensions": ["aw"] }, + "application/appx": { + "compressible": false, + "extensions": ["appx"] + }, + "application/appxbundle": { + "compressible": false, + "extensions": ["appxbundle"] + }, "application/at+jwt": { "source": "iana" }, @@ -155,6 +208,16 @@ "source": "iana", "compressible": true }, + "application/automationml-aml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["aml"] + }, + "application/automationml-amlx+zip": { + "source": "iana", + "compressible": false, + "extensions": ["amlx"] + }, "application/bacnet-xdd+zip": { "source": "iana", "compressible": false @@ -171,6 +234,12 @@ "charset": "UTF-8", "compressible": true }, + "application/bufr": { + "source": "iana" + }, + "application/c2pa": { + "source": "iana" + }, "application/calendar+json": { "source": "iana", "compressible": true @@ -208,6 +277,11 @@ "compressible": true, "extensions": ["ccxml"] }, + "application/cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, "application/cdfx+xml": { "source": "iana", "compressible": true, @@ -236,6 +310,9 @@ "application/cdni": { "source": "iana" }, + "application/ce+cbor": { + "source": "iana" + }, "application/cea": { "source": "iana" }, @@ -250,10 +327,16 @@ "application/cfw": { "source": "iana" }, + "application/cid-edhoc+cbor-seq": { + "source": "iana" + }, "application/city+json": { "source": "iana", "compressible": true }, + "application/city+json-seq": { + "source": "iana" + }, "application/clr": { "source": "iana" }, @@ -272,6 +355,9 @@ "source": "iana", "compressible": true }, + "application/coap-eap": { + "source": "iana" + }, "application/coap-group+json": { "source": "iana", "compressible": true @@ -282,6 +368,9 @@ "application/commonground": { "source": "iana" }, + "application/concise-problem-details+cbor": { + "source": "iana" + }, "application/conference-info+xml": { "source": "iana", "compressible": true @@ -295,6 +384,9 @@ "application/cose-key-set": { "source": "iana" }, + "application/cose-x509": { + "source": "iana" + }, "application/cpl+xml": { "source": "iana", "compressible": true, @@ -319,6 +411,17 @@ "source": "apache", "extensions": ["cu"] }, + "application/cwl": { + "source": "iana", + "extensions": ["cwl"] + }, + "application/cwl+json": { + "source": "iana", + "compressible": true + }, + "application/cwl+yaml": { + "source": "iana" + }, "application/cwt": { "source": "iana" }, @@ -360,7 +463,8 @@ "compressible": true }, "application/dicom": { - "source": "iana" + "source": "iana", + "extensions": ["dcm"] }, "application/dicom+json": { "source": "iana", @@ -394,6 +498,9 @@ "application/dots+cbor": { "source": "iana" }, + "application/dpop+jwt": { + "source": "iana" + }, "application/dskpp+xml": { "source": "iana", "compressible": true @@ -410,10 +517,33 @@ "application/dvcs": { "source": "iana" }, - "application/ecmascript": { + "application/eat+cwt": { + "source": "iana" + }, + "application/eat+jwt": { + "source": "iana" + }, + "application/eat-bun+cbor": { + "source": "iana" + }, + "application/eat-bun+json": { "source": "iana", + "compressible": true + }, + "application/eat-ucs+cbor": { + "source": "iana" + }, + "application/eat-ucs+json": { + "source": "iana", + "compressible": true + }, + "application/ecmascript": { + "source": "apache", "compressible": true, - "extensions": ["es","ecma"] + "extensions": ["ecma"] + }, + "application/edhoc+cbor-seq": { + "source": "iana" }, "application/edi-consent": { "source": "iana" @@ -458,6 +588,10 @@ "application/emergencycalldata.ecall.msd": { "source": "iana" }, + "application/emergencycalldata.legacyesn+json": { + "source": "iana", + "compressible": true + }, "application/emergencycalldata.providerinfo+xml": { "source": "iana", "compressible": true @@ -487,6 +621,9 @@ "application/encaprtp": { "source": "iana" }, + "application/entity-statement+jwt": { + "source": "iana" + }, "application/epp+xml": { "source": "iana", "compressible": true @@ -517,6 +654,10 @@ "application/fastsoap": { "source": "iana" }, + "application/fdf": { + "source": "iana", + "extensions": ["fdf"] + }, "application/fdt+xml": { "source": "iana", "compressible": true, @@ -567,6 +708,14 @@ "application/geopackage+sqlite3": { "source": "iana" }, + "application/geopose+json": { + "source": "iana", + "compressible": true + }, + "application/geoxacml+json": { + "source": "iana", + "compressible": true + }, "application/geoxacml+xml": { "source": "iana", "compressible": true @@ -579,11 +728,26 @@ "compressible": true, "extensions": ["gml"] }, + "application/gnap-binding-jws": { + "source": "iana" + }, + "application/gnap-binding-jwsd": { + "source": "iana" + }, + "application/gnap-binding-rotation-jws": { + "source": "iana" + }, + "application/gnap-binding-rotation-jwsd": { + "source": "iana" + }, "application/gpx+xml": { "source": "apache", "compressible": true, "extensions": ["gpx"] }, + "application/grib": { + "source": "iana" + }, "application/gxf": { "source": "apache", "extensions": ["gxf"] @@ -603,6 +767,11 @@ "application/hjson": { "extensions": ["hjson"] }, + "application/hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, "application/http": { "source": "iana" }, @@ -668,7 +837,7 @@ "extensions": ["its"] }, "application/java-archive": { - "source": "apache", + "source": "iana", "compressible": false, "extensions": ["jar","war","ear"] }, @@ -683,10 +852,10 @@ "extensions": ["class"] }, "application/javascript": { - "source": "iana", + "source": "apache", "charset": "UTF-8", "compressible": true, - "extensions": ["js","mjs"] + "extensions": ["js"] }, "application/jf2feed+json": { "source": "iana", @@ -707,6 +876,10 @@ "source": "iana", "compressible": true }, + "application/jscontact+json": { + "source": "iana", + "compressible": true + }, "application/json": { "source": "iana", "charset": "UTF-8", @@ -728,6 +901,9 @@ "compressible": true, "extensions": ["jsonml"] }, + "application/jsonpath": { + "source": "iana" + }, "application/jwk+json": { "source": "iana", "compressible": true @@ -736,6 +912,9 @@ "source": "iana", "compressible": true }, + "application/jwk-set+jwt": { + "source": "iana" + }, "application/jwt": { "source": "iana" }, @@ -760,10 +939,20 @@ "application/link-format": { "source": "iana" }, + "application/linkset": { + "source": "iana" + }, + "application/linkset+json": { + "source": "iana", + "compressible": true + }, "application/load-control+xml": { "source": "iana", "compressible": true }, + "application/logout+jwt": { + "source": "iana" + }, "application/lost+xml": { "source": "iana", "compressible": true, @@ -954,7 +1143,7 @@ }, "application/mp4": { "source": "iana", - "extensions": ["mp4s","m4p"] + "extensions": ["mp4","mpg4","mp4s","m4p"] }, "application/mpeg4-generic": { "source": "iana" @@ -983,6 +1172,14 @@ "charset": "UTF-8", "compressible": true }, + "application/msix": { + "compressible": false, + "extensions": ["msix"] + }, + "application/msixbundle": { + "compressible": false, + "extensions": ["msixbundle"] + }, "application/msword": { "source": "iana", "compressible": false, @@ -1046,7 +1243,7 @@ }, "application/octet-stream": { "source": "iana", - "compressible": false, + "compressible": true, "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] }, "application/oda": { @@ -1070,6 +1267,9 @@ "compressible": false, "extensions": ["ogx"] }, + "application/ohttp-keys": { + "source": "iana" + }, "application/omdoc+xml": { "source": "apache", "compressible": true, @@ -1077,7 +1277,7 @@ }, "application/onenote": { "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + "extensions": ["onetoc","onetoc2","onetmp","onepkg","one","onea"] }, "application/opc-nodeset+xml": { "source": "iana", @@ -1135,7 +1335,7 @@ }, "application/pgp-signature": { "source": "iana", - "extensions": ["asc","sig"] + "extensions": ["sig","asc"] }, "application/pics-rules": { "source": "apache", @@ -1212,6 +1412,15 @@ "source": "iana", "compressible": true }, + "application/private-token-issuer-directory": { + "source": "iana" + }, + "application/private-token-request": { + "source": "iana" + }, + "application/private-token-response": { + "source": "iana" + }, "application/problem+json": { "source": "iana", "compressible": true @@ -1225,6 +1434,9 @@ "compressible": true, "extensions": ["provx"] }, + "application/provided-claims+jwt": { + "source": "iana" + }, "application/prs.alvestrand.titrax-sheet": { "source": "iana" }, @@ -1240,6 +1452,29 @@ "source": "iana", "compressible": false }, + "application/prs.implied-document+xml": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-executable": { + "source": "iana" + }, + "application/prs.implied-object+json": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-object+json-seq": { + "source": "iana" + }, + "application/prs.implied-object+yaml": { + "source": "iana" + }, + "application/prs.implied-structure": { + "source": "iana" + }, + "application/prs.mayfile": { + "source": "iana" + }, "application/prs.nprend": { "source": "iana" }, @@ -1249,9 +1484,13 @@ "application/prs.rdf-xml-crypt": { "source": "iana" }, + "application/prs.vcfbzip2": { + "source": "iana" + }, "application/prs.xsf+xml": { "source": "iana", - "compressible": true + "compressible": true, + "extensions": ["xsf"] }, "application/pskc+xml": { "source": "iana", @@ -1291,12 +1530,15 @@ "extensions": ["rnc"] }, "application/remote-printing": { - "source": "iana" + "source": "apache" }, "application/reputon+json": { "source": "iana", "compressible": true }, + "application/resolve-response+jwt": { + "source": "iana" + }, "application/resource-lists+xml": { "source": "iana", "compressible": true, @@ -1338,6 +1580,9 @@ "compressible": true, "extensions": ["rusd"] }, + "application/rpki-checklist": { + "source": "iana" + }, "application/rpki-ghostbusters": { "source": "iana", "extensions": ["gbr"] @@ -1353,6 +1598,9 @@ "source": "iana", "extensions": ["roa"] }, + "application/rpki-signed-tal": { + "source": "iana" + }, "application/rpki-updown": { "source": "iana" }, @@ -1525,7 +1773,7 @@ "source": "iana" }, "application/smil": { - "source": "iana" + "source": "apache" }, "application/smil+xml": { "source": "iana", @@ -1560,7 +1808,8 @@ "compressible": true }, "application/sql": { - "source": "iana" + "source": "iana", + "extensions": ["sql"] }, "application/srgs": { "source": "iana", @@ -1581,15 +1830,27 @@ "compressible": true, "extensions": ["ssdl"] }, + "application/sslkeylogfile": { + "source": "iana" + }, "application/ssml+xml": { "source": "iana", "compressible": true, "extensions": ["ssml"] }, + "application/st2110-41": { + "source": "iana" + }, "application/stix+json": { "source": "iana", "compressible": true }, + "application/stratum": { + "source": "iana" + }, + "application/swid+cbor": { + "source": "iana" + }, "application/swid+xml": { "source": "iana", "compressible": true, @@ -1669,13 +1930,21 @@ "source": "iana", "compressible": true }, + "application/tm+json": { + "source": "iana", + "compressible": true + }, "application/tnauthlist": { "source": "iana" }, + "application/toc+cbor": { + "source": "iana" + }, "application/token-introspection+jwt": { "source": "iana" }, "application/toml": { + "source": "iana", "compressible": true, "extensions": ["toml"] }, @@ -1686,6 +1955,16 @@ "source": "iana", "extensions": ["trig"] }, + "application/trust-chain+json": { + "source": "iana", + "compressible": true + }, + "application/trust-mark+jwt": { + "source": "iana" + }, + "application/trust-mark-delegation+jwt": { + "source": "iana" + }, "application/ttml+xml": { "source": "iana", "compressible": true, @@ -1704,6 +1983,13 @@ "compressible": false, "extensions": ["ubj"] }, + "application/uccs+cbor": { + "source": "iana" + }, + "application/ujcs+json": { + "source": "iana", + "compressible": true + }, "application/ulpfec": { "source": "iana" }, @@ -1725,6 +2011,15 @@ "source": "iana", "compressible": true }, + "application/vc": { + "source": "iana" + }, + "application/vc+cose": { + "source": "iana" + }, + "application/vc+jwt": { + "source": "iana" + }, "application/vcard+json": { "source": "iana", "compressible": true @@ -1744,20 +2039,47 @@ "compressible": true, "extensions": ["1km"] }, + "application/vnd.1ob": { + "source": "iana" + }, "application/vnd.3gpp-prose+xml": { "source": "iana", "compressible": true }, + "application/vnd.3gpp-prose-pc3a+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ach+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp-prose-pc3ch+xml": { "source": "iana", "compressible": true }, + "application/vnd.3gpp-prose-pc8+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp-v2x-local-service-information": { "source": "iana" }, "application/vnd.3gpp.5gnas": { "source": "iana" }, + "application/vnd.3gpp.5gsa2x": { + "source": "iana" + }, + "application/vnd.3gpp.5gsa2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gsv2x": { + "source": "iana" + }, + "application/vnd.3gpp.5gsv2x-local-service-information": { + "source": "iana" + }, "application/vnd.3gpp.access-transfer-events+xml": { "source": "iana", "compressible": true @@ -1766,6 +2088,14 @@ "source": "iana", "compressible": true }, + "application/vnd.3gpp.crs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.current-location-discovery+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.gmop+xml": { "source": "iana", "compressible": true @@ -1790,9 +2120,17 @@ "source": "iana", "compressible": true }, + "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.mcdata-payload": { "source": "iana" }, + "application/vnd.3gpp.mcdata-regroup+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.mcdata-service-config+xml": { "source": "iana", "compressible": true @@ -1828,6 +2166,10 @@ "source": "iana", "compressible": true }, + "application/vnd.3gpp.mcptt-regroup+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.mcptt-service-config+xml": { "source": "iana", "compressible": true @@ -1852,10 +2194,6 @@ "source": "iana", "compressible": true }, - "application/vnd.3gpp.mcvideo-affiliation-info+xml": { - "source": "iana", - "compressible": true - }, "application/vnd.3gpp.mcvideo-info+xml": { "source": "iana", "compressible": true @@ -1868,6 +2206,10 @@ "source": "iana", "compressible": true }, + "application/vnd.3gpp.mcvideo-regroup+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.mcvideo-service-config+xml": { "source": "iana", "compressible": true @@ -1906,9 +2248,45 @@ "source": "iana", "extensions": ["pvb"] }, + "application/vnd.3gpp.pinapp-info+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.s1ap": { "source": "iana" }, + "application/vnd.3gpp.seal-group-doc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-network-qos-management-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-ue-config-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-unicast-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-user-profile-info+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp.sms": { "source": "iana" }, @@ -1932,6 +2310,13 @@ "source": "iana", "compressible": true }, + "application/vnd.3gpp.v2x": { + "source": "iana" + }, + "application/vnd.3gpp.vae-info+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.3gpp2.bcmcsinfo+xml": { "source": "iana", "compressible": true @@ -1958,6 +2343,14 @@ "source": "iana", "extensions": ["imp"] }, + "application/vnd.acm.addressxfer+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.acm.chatbot+json": { + "source": "iana", + "compressible": true + }, "application/vnd.acucobol": { "source": "iana", "extensions": ["acu"] @@ -1991,7 +2384,7 @@ "extensions": ["xdp"] }, "application/vnd.adobe.xfdf": { - "source": "iana", + "source": "apache", "extensions": ["xfdf"] }, "application/vnd.aether.imp": { @@ -2041,7 +2434,7 @@ "extensions": ["age"] }, "application/vnd.ah-barcode": { - "source": "iana" + "source": "apache" }, "application/vnd.ahead.space": { "source": "iana", @@ -2107,6 +2500,9 @@ "application/vnd.apache.arrow.stream": { "source": "iana" }, + "application/vnd.apache.parquet": { + "source": "iana" + }, "application/vnd.apache.thrift.binary": { "source": "iana" }, @@ -2116,6 +2512,9 @@ "application/vnd.apache.thrift.json": { "source": "iana" }, + "application/vnd.apexlang": { + "source": "iana" + }, "application/vnd.api+json": { "source": "iana", "compressible": true @@ -2154,7 +2553,7 @@ "extensions": ["pkpass"] }, "application/vnd.arastra.swi": { - "source": "iana" + "source": "apache" }, "application/vnd.aristanetworks.swi": { "source": "iana", @@ -2175,6 +2574,9 @@ "source": "iana", "extensions": ["aep"] }, + "application/vnd.autodesk.fbx": { + "extensions": ["fbx"] + }, "application/vnd.autopackage": { "source": "iana" }, @@ -2211,6 +2613,14 @@ "source": "iana", "compressible": true }, + "application/vnd.belightsoft.lhzd+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.belightsoft.lhzl+zip": { + "source": "iana", + "compressible": false + }, "application/vnd.bint.med-content": { "source": "iana" }, @@ -2249,6 +2659,13 @@ "source": "iana", "compressible": true }, + "application/vnd.bzip3": { + "source": "iana" + }, + "application/vnd.c3voc.schedule+xml": { + "source": "iana", + "compressible": true + }, "application/vnd.cab-jscript": { "source": "iana" }, @@ -2315,6 +2732,16 @@ "source": "iana", "extensions": ["c11amz"] }, + "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { + "source": "iana" + }, + "application/vnd.cncf.helm.chart.provenance.v1.prov": { + "source": "iana" + }, + "application/vnd.cncf.helm.config.v1+json": { + "source": "iana", + "compressible": true + }, "application/vnd.coffeescript": { "source": "iana" }, @@ -2481,6 +2908,9 @@ "source": "iana", "extensions": ["rdz"] }, + "application/vnd.datalog": { + "source": "iana" + }, "application/vnd.datapackage+json": { "source": "iana", "compressible": true @@ -2493,6 +2923,11 @@ "source": "iana", "extensions": ["dbf"] }, + "application/vnd.dcmp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dcmp"] + }, "application/vnd.debian.binary-package": { "source": "iana" }, @@ -2691,6 +3126,10 @@ "application/vnd.efi.iso": { "source": "iana" }, + "application/vnd.eln+zip": { + "source": "iana", + "compressible": false + }, "application/vnd.emclient.accessrequest+xml": { "source": "iana", "compressible": true @@ -2729,6 +3168,9 @@ "application/vnd.ericsson.quickcall": { "source": "iana" }, + "application/vnd.erofs": { + "source": "iana" + }, "application/vnd.espass-espass+zip": { "source": "iana", "compressible": false @@ -2865,7 +3307,7 @@ "source": "iana" }, "application/vnd.fdf": { - "source": "iana", + "source": "apache", "extensions": ["fdf"] }, "application/vnd.fdsn.mseed": { @@ -2876,6 +3318,11 @@ "source": "iana", "extensions": ["seed","dataless"] }, + "application/vnd.fdsn.stationxml+xml": { + "source": "iana", + "charset": "XML-BASED", + "compressible": true + }, "application/vnd.ffsns": { "source": "iana" }, @@ -2907,12 +3354,15 @@ "source": "iana", "extensions": ["fm","frame","maker","book"] }, + "application/vnd.freelog.comic": { + "source": "iana" + }, "application/vnd.frogans.fnc": { - "source": "iana", + "source": "apache", "extensions": ["fnc"] }, "application/vnd.frogans.ltf": { - "source": "iana", + "source": "apache", "extensions": ["ltf"] }, "application/vnd.fsc.weblaunch": { @@ -2990,29 +3440,62 @@ "source": "iana", "extensions": ["fzs"] }, + "application/vnd.ga4gh.passport+jwt": { + "source": "iana" + }, "application/vnd.genomatix.tuxedo": { "source": "iana", "extensions": ["txd"] }, + "application/vnd.genozip": { + "source": "iana" + }, "application/vnd.gentics.grd+json": { "source": "iana", "compressible": true }, - "application/vnd.geo+json": { + "application/vnd.gentoo.catmetadata+xml": { "source": "iana", "compressible": true }, - "application/vnd.geocube+xml": { + "application/vnd.gentoo.ebuild": { + "source": "iana" + }, + "application/vnd.gentoo.eclass": { + "source": "iana" + }, + "application/vnd.gentoo.gpkg": { + "source": "iana" + }, + "application/vnd.gentoo.manifest": { + "source": "iana" + }, + "application/vnd.gentoo.pkgmetadata+xml": { "source": "iana", "compressible": true }, + "application/vnd.gentoo.xpak": { + "source": "iana" + }, + "application/vnd.geo+json": { + "source": "apache", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "apache", + "compressible": true + }, "application/vnd.geogebra.file": { "source": "iana", "extensions": ["ggb"] }, - "application/vnd.geogebra.slides": { + "application/vnd.geogebra.pinboard": { "source": "iana" }, + "application/vnd.geogebra.slides": { + "source": "iana", + "extensions": ["ggs"] + }, "application/vnd.geogebra.tool": { "source": "iana", "extensions": ["ggt"] @@ -3046,18 +3529,64 @@ "source": "iana", "extensions": ["gmx"] }, + "application/vnd.gnu.taler.exchange+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.gnu.taler.merchant+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.google-apps.audio": {}, "application/vnd.google-apps.document": { "compressible": false, "extensions": ["gdoc"] }, + "application/vnd.google-apps.drawing": { + "compressible": false, + "extensions": ["gdraw"] + }, + "application/vnd.google-apps.drive-sdk": { + "compressible": false + }, + "application/vnd.google-apps.file": {}, + "application/vnd.google-apps.folder": { + "compressible": false + }, + "application/vnd.google-apps.form": { + "compressible": false, + "extensions": ["gform"] + }, + "application/vnd.google-apps.fusiontable": {}, + "application/vnd.google-apps.jam": { + "compressible": false, + "extensions": ["gjam"] + }, + "application/vnd.google-apps.mail-layout": {}, + "application/vnd.google-apps.map": { + "compressible": false, + "extensions": ["gmap"] + }, + "application/vnd.google-apps.photo": {}, "application/vnd.google-apps.presentation": { "compressible": false, "extensions": ["gslides"] }, + "application/vnd.google-apps.script": { + "compressible": false, + "extensions": ["gscript"] + }, + "application/vnd.google-apps.shortcut": {}, + "application/vnd.google-apps.site": { + "compressible": false, + "extensions": ["gsite"] + }, "application/vnd.google-apps.spreadsheet": { "compressible": false, "extensions": ["gsheet"] }, + "application/vnd.google-apps.unknown": {}, + "application/vnd.google-apps.video": {}, "application/vnd.google-earth.kml+xml": { "source": "iana", "compressible": true, @@ -3069,7 +3598,7 @@ "extensions": ["kmz"] }, "application/vnd.gov.sk.e-form+xml": { - "source": "iana", + "source": "apache", "compressible": true }, "application/vnd.gov.sk.e-form+zip": { @@ -3077,6 +3606,11 @@ "compressible": false }, "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdcf"] + }, + "application/vnd.gpxsee.map+xml": { "source": "iana", "compressible": true }, @@ -3151,16 +3685,6 @@ "source": "iana", "extensions": ["les"] }, - "application/vnd.hl7cda+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.hl7v2+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, "application/vnd.hp-hpgl": { "source": "iana", "extensions": ["hpgl"] @@ -3185,6 +3709,9 @@ "source": "iana", "extensions": ["pclxl"] }, + "application/vnd.hsl": { + "source": "iana" + }, "application/vnd.httphone": { "source": "iana" }, @@ -3208,7 +3735,7 @@ "source": "iana" }, "application/vnd.ibm.afplinedata": { - "source": "iana" + "source": "apache" }, "application/vnd.ibm.electronic-media": { "source": "iana" @@ -3218,7 +3745,7 @@ "extensions": ["mpy"] }, "application/vnd.ibm.modcap": { - "source": "iana", + "source": "apache", "extensions": ["afp","listafp","list3820"] }, "application/vnd.ibm.rights-management": { @@ -3294,7 +3821,7 @@ "compressible": true }, "application/vnd.informix-visionary": { - "source": "iana" + "source": "apache" }, "application/vnd.infotech.project": { "source": "iana" @@ -3332,6 +3859,21 @@ "source": "iana", "extensions": ["qfx"] }, + "application/vnd.ipfs.ipns-record": { + "source": "iana" + }, + "application/vnd.ipld.car": { + "source": "iana" + }, + "application/vnd.ipld.dag-cbor": { + "source": "iana" + }, + "application/vnd.ipld.dag-json": { + "source": "iana" + }, + "application/vnd.ipld.raw": { + "source": "iana" + }, "application/vnd.iptc.g2.catalogitem+xml": { "source": "iana", "compressible": true @@ -3460,10 +4002,20 @@ "source": "iana", "extensions": ["kwd","kwt"] }, + "application/vnd.kdl": { + "source": "iana" + }, "application/vnd.kenameaapp": { "source": "iana", "extensions": ["htke"] }, + "application/vnd.keyman.kmp+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.keyman.kmx": { + "source": "iana" + }, "application/vnd.kidspiration": { "source": "iana", "extensions": ["kia"] @@ -3495,6 +4047,9 @@ "application/vnd.laszip": { "source": "iana" }, + "application/vnd.ldev.productlicensing": { + "source": "iana" + }, "application/vnd.leap+json": { "source": "iana", "compressible": true @@ -3585,6 +4140,12 @@ "source": "iana", "extensions": ["mcd"] }, + "application/vnd.mdl": { + "source": "iana" + }, + "application/vnd.mdl-mbsdf": { + "source": "iana" + }, "application/vnd.medcalcdata": { "source": "iana", "extensions": ["mc1"] @@ -3593,9 +4154,15 @@ "source": "iana", "extensions": ["cdkey"] }, + "application/vnd.medicalholodeck.recordxr": { + "source": "iana" + }, "application/vnd.meridian-slingshot": { "source": "iana" }, + "application/vnd.mermaid": { + "source": "iana" + }, "application/vnd.mfer": { "source": "iana", "extensions": ["mwf"] @@ -3664,6 +4231,9 @@ "source": "iana", "extensions": ["txf"] }, + "application/vnd.modl": { + "source": "iana" + }, "application/vnd.mophun.application": { "source": "iana", "extensions": ["mpn"] @@ -3831,6 +4401,9 @@ "application/vnd.ms-tnef": { "source": "iana" }, + "application/vnd.ms-visio.viewer": { + "extensions": ["vdx"] + }, "application/vnd.ms-windows.devicepairing": { "source": "iana" }, @@ -3883,6 +4456,9 @@ "source": "iana", "extensions": ["mseq"] }, + "application/vnd.msgpack": { + "source": "iana" + }, "application/vnd.msign": { "source": "iana" }, @@ -3911,6 +4487,22 @@ "source": "iana", "compressible": true }, + "application/vnd.nato.bindingdataobject+cbor": { + "source": "iana" + }, + "application/vnd.nato.bindingdataobject+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nato.bindingdataobject+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bdo"] + }, + "application/vnd.nato.openxmlformats-package.iepd+zip": { + "source": "iana", + "compressible": false + }, "application/vnd.ncd.control": { "source": "iana" }, @@ -3997,7 +4589,7 @@ "extensions": ["ngdat"] }, "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", + "source": "apache", "extensions": ["n-gage"] }, "application/vnd.nokia.ncd": { @@ -4045,6 +4637,19 @@ "application/vnd.ntt-local.sip-ta_tcp_stream": { "source": "iana" }, + "application/vnd.oai.workflows": { + "source": "iana" + }, + "application/vnd.oai.workflows+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oai.workflows+yaml": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.base": { + "source": "iana" + }, "application/vnd.oasis.opendocument.chart": { "source": "iana", "extensions": ["odc"] @@ -4054,7 +4659,7 @@ "extensions": ["otc"] }, "application/vnd.oasis.opendocument.database": { - "source": "iana", + "source": "apache", "extensions": ["odb"] }, "application/vnd.oasis.opendocument.formula": { @@ -4109,6 +4714,9 @@ "source": "iana", "extensions": ["odm"] }, + "application/vnd.oasis.opendocument.text-master-template": { + "source": "iana" + }, "application/vnd.oasis.opendocument.text-template": { "source": "iana", "extensions": ["ott"] @@ -4191,7 +4799,7 @@ "compressible": true }, "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana", + "source": "apache", "compressible": true }, "application/vnd.oma.bcast.imd+xml": { @@ -4222,7 +4830,7 @@ "source": "iana" }, "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana", + "source": "apache", "compressible": true }, "application/vnd.oma.bcast.sprov+xml": { @@ -4352,6 +4960,9 @@ "application/vnd.onepagertatx": { "source": "iana" }, + "application/vnd.onvif.metadata": { + "source": "iana" + }, "application/vnd.openblox.game+xml": { "source": "iana", "compressible": true, @@ -4375,6 +4986,10 @@ "application/vnd.opentimestamps.ots": { "source": "iana" }, + "application/vnd.openvpi.dspx+json": { + "source": "iana", + "compressible": true + }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { "source": "iana", "compressible": true @@ -4785,6 +5400,15 @@ "source": "iana", "extensions": ["box"] }, + "application/vnd.procrate.brushset": { + "extensions": ["brushset"] + }, + "application/vnd.procreate.brush": { + "extensions": ["brush"] + }, + "application/vnd.procreate.dream": { + "extensions": ["drm"] + }, "application/vnd.proteus.magazine": { "source": "iana", "extensions": ["mgz"] @@ -4792,6 +5416,9 @@ "application/vnd.psfs": { "source": "iana" }, + "application/vnd.pt.mundusmundi": { + "source": "iana" + }, "application/vnd.publishare-delta-tree": { "source": "iana", "extensions": ["qps"] @@ -4805,7 +5432,8 @@ }, "application/vnd.pwg-xhtml-print+xml": { "source": "iana", - "compressible": true + "compressible": true, + "extensions": ["xhtm"] }, "application/vnd.qualcomm.brew-app-res": { "source": "iana" @@ -4903,6 +5531,9 @@ "compressible": true, "extensions": ["musicxml"] }, + "application/vnd.relpipe": { + "source": "iana" + }, "application/vnd.renlearn.rlprint": { "source": "iana" }, @@ -5056,6 +5687,9 @@ "source": "iana", "compressible": true }, + "application/vnd.sketchometry": { + "source": "iana" + }, "application/vnd.smaf": { "source": "iana", "extensions": ["mmf"] @@ -5067,6 +5701,9 @@ "source": "iana", "extensions": ["teacher"] }, + "application/vnd.smintio.portals.archive": { + "source": "iana" + }, "application/vnd.snesdev-page-table": { "source": "iana" }, @@ -5194,6 +5831,9 @@ "application/vnd.swiftview-ics": { "source": "iana" }, + "application/vnd.sybyl.mol2": { + "source": "iana" + }, "application/vnd.sycle+xml": { "source": "iana", "compressible": true @@ -5298,6 +5938,10 @@ "source": "iana", "extensions": ["ufd","ufdl"] }, + "application/vnd.uic.osdm+json": { + "source": "iana", + "compressible": true + }, "application/vnd.uiq.theme": { "source": "iana", "extensions": ["utz"] @@ -5313,7 +5957,7 @@ "application/vnd.uoml+xml": { "source": "iana", "compressible": true, - "extensions": ["uoml"] + "extensions": ["uoml","uo"] }, "application/vnd.uplanet.alert": { "source": "iana" @@ -5374,6 +6018,13 @@ "source": "iana", "compressible": true }, + "application/vnd.veraison.tsm-report+cbor": { + "source": "iana" + }, + "application/vnd.veraison.tsm-report+json": { + "source": "iana", + "compressible": true + }, "application/vnd.verimatrix.vcas": { "source": "iana" }, @@ -5392,7 +6043,7 @@ }, "application/vnd.visio": { "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] + "extensions": ["vsd","vst","vss","vsw","vsdx","vtx"] }, "application/vnd.visionary": { "source": "iana", @@ -5401,6 +6052,9 @@ "application/vnd.vividence.scriptfile": { "source": "iana" }, + "application/vnd.vocalshaper.vsp4": { + "source": "iana" + }, "application/vnd.vsf": { "source": "iana", "extensions": ["vsf"] @@ -5424,6 +6078,9 @@ "source": "iana", "extensions": ["wmlsc"] }, + "application/vnd.wasmflow.wafl": { + "source": "iana" + }, "application/vnd.webturbo": { "source": "iana", "extensions": ["wtb"] @@ -5456,6 +6113,9 @@ "source": "iana", "extensions": ["nbp"] }, + "application/vnd.wordlift": { + "source": "iana" + }, "application/vnd.wordperfect": { "source": "iana", "extensions": ["wpd"] @@ -5490,6 +6150,12 @@ "source": "iana", "extensions": ["xar"] }, + "application/vnd.xarin.cpj": { + "source": "iana" + }, + "application/vnd.xecrets-encrypted": { + "source": "iana" + }, "application/vnd.xfdl": { "source": "iana", "extensions": ["xfdl"] @@ -5561,9 +6227,6 @@ "source": "iana", "extensions": ["cmp"] }, - "application/vnd.youtube.yt": { - "source": "iana" - }, "application/vnd.zul": { "source": "iana", "extensions": ["zir","zirz"] @@ -5582,6 +6245,19 @@ "source": "iana", "compressible": true }, + "application/voucher-jws+json": { + "source": "iana", + "compressible": true + }, + "application/vp": { + "source": "iana" + }, + "application/vp+cose": { + "source": "iana" + }, + "application/vp+jwt": { + "source": "iana" + }, "application/vq-rtcpxr": { "source": "iana" }, @@ -5677,6 +6353,9 @@ "source": "apache", "extensions": ["torrent"] }, + "application/x-blender": { + "extensions": ["blend"] + }, "application/x-blorb": { "source": "apache", "extensions": ["blb","blorb"] @@ -5721,6 +6400,9 @@ "application/x-compress": { "source": "apache" }, + "application/x-compressed": { + "extensions": ["rar"] + }, "application/x-conference": { "source": "apache", "extensions": ["nsc"] @@ -5865,6 +6547,10 @@ "source": "apache", "extensions": ["install"] }, + "application/x-ipynb+json": { + "compressible": true, + "extensions": ["ipynb"] + }, "application/x-iso9660-image": { "source": "apache", "extensions": ["iso"] @@ -6196,6 +6882,9 @@ "source": "apache", "extensions": ["xz"] }, + "application/x-zip-compressed": { + "extensions": ["zip"] + }, "application/x-zmachine": { "source": "apache", "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] @@ -6254,6 +6943,10 @@ "compressible": true, "extensions": ["xenc"] }, + "application/xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, "application/xhtml+xml": { "source": "iana", "compressible": true, @@ -6314,10 +7007,16 @@ "compressible": true, "extensions": ["mxml","xhvml","xvml","xvm"] }, + "application/yaml": { + "source": "iana" + }, "application/yang": { "source": "iana", "extensions": ["yang"] }, + "application/yang-data+cbor": { + "source": "iana" + }, "application/yang-data+json": { "source": "iana", "compressible": true @@ -6334,6 +7033,10 @@ "source": "iana", "compressible": true }, + "application/yang-sid+json": { + "source": "iana", + "compressible": true + }, "application/yin+xml": { "source": "iana", "compressible": true, @@ -6344,6 +7047,9 @@ "compressible": false, "extensions": ["zip"] }, + "application/zip+dotlottie": { + "extensions": ["lottie"] + }, "application/zlib": { "source": "iana" }, @@ -6365,7 +7071,8 @@ "source": "iana" }, "audio/aac": { - "source": "iana" + "source": "iana", + "extensions": ["adts","aac"] }, "audio/ac3": { "source": "iana" @@ -6488,6 +7195,9 @@ "audio/evs": { "source": "iana" }, + "audio/flac": { + "source": "iana" + }, "audio/flexfec": { "source": "iana" }, @@ -6570,6 +7280,9 @@ "audio/lpc": { "source": "iana" }, + "audio/matroska": { + "source": "iana" + }, "audio/melp": { "source": "iana" }, @@ -6589,6 +7302,9 @@ "source": "apache", "extensions": ["mid","midi","kar","rmi"] }, + "audio/midi-clip": { + "source": "iana" + }, "audio/mobile-xmf": { "source": "iana", "extensions": ["mxmf"] @@ -6600,7 +7316,7 @@ "audio/mp4": { "source": "iana", "compressible": false, - "extensions": ["m4a","mp4a"] + "extensions": ["m4a","mp4a","m4b"] }, "audio/mp4a-latm": { "source": "iana" @@ -6850,7 +7566,7 @@ "source": "iana" }, "audio/vnd.qcelp": { - "source": "iana" + "source": "apache" }, "audio/vnd.rhetorex.32kadpcm": { "source": "iana" @@ -7009,6 +7725,7 @@ "extensions": ["exr"] }, "image/apng": { + "source": "iana", "compressible": false, "extensions": ["apng"] }, @@ -7028,7 +7745,7 @@ "image/bmp": { "source": "iana", "compressible": true, - "extensions": ["bmp"] + "extensions": ["bmp","dib"] }, "image/cgm": { "source": "iana", @@ -7038,6 +7755,10 @@ "source": "iana", "extensions": ["drle"] }, + "image/dpx": { + "source": "iana", + "extensions": ["dpx"] + }, "image/emf": { "source": "iana", "extensions": ["emf"] @@ -7075,14 +7796,21 @@ "source": "iana", "extensions": ["hej2"] }, - "image/hsj2": { - "source": "iana", - "extensions": ["hsj2"] - }, "image/ief": { "source": "iana", "extensions": ["ief"] }, + "image/j2c": { + "source": "iana" + }, + "image/jaii": { + "source": "iana", + "extensions": ["jaii"] + }, + "image/jais": { + "source": "iana", + "extensions": ["jais"] + }, "image/jls": { "source": "iana", "extensions": ["jls"] @@ -7095,7 +7823,7 @@ "image/jpeg": { "source": "iana", "compressible": false, - "extensions": ["jpeg","jpg","jpe"] + "extensions": ["jpg","jpeg","jpe"] }, "image/jph": { "source": "iana", @@ -7108,13 +7836,17 @@ "image/jpm": { "source": "iana", "compressible": false, - "extensions": ["jpm"] + "extensions": ["jpm","jpgm"] }, "image/jpx": { "source": "iana", "compressible": false, "extensions": ["jpx","jpf"] }, + "image/jxl": { + "source": "iana", + "extensions": ["jxl"] + }, "image/jxr": { "source": "iana", "extensions": ["jxr"] @@ -7155,7 +7887,8 @@ "source": "iana" }, "image/pjpeg": { - "compressible": false + "compressible": false, + "extensions": ["jfif"] }, "image/png": { "source": "iana", @@ -7164,7 +7897,7 @@ }, "image/prs.btif": { "source": "iana", - "extensions": ["btif"] + "extensions": ["btif","btf"] }, "image/prs.pti": { "source": "iana", @@ -7204,6 +7937,9 @@ "source": "iana", "extensions": ["azv"] }, + "image/vnd.clip": { + "source": "iana" + }, "image/vnd.cns.inf2": { "source": "iana" }, @@ -7317,7 +8053,7 @@ "extensions": ["pcx"] }, "image/webp": { - "source": "apache", + "source": "iana", "extensions": ["webp"] }, "image/wmf": { @@ -7328,6 +8064,9 @@ "source": "apache", "extensions": ["3ds"] }, + "image/x-adobe-dng": { + "extensions": ["dng"] + }, "image/x-cmu-raster": { "source": "apache", "extensions": ["ras"] @@ -7336,6 +8075,9 @@ "source": "apache", "extensions": ["cmx"] }, + "image/x-emf": { + "source": "iana" + }, "image/x-freehand": { "source": "apache", "extensions": ["fh","fhc","fh4","fh5","fh7"] @@ -7390,6 +8132,9 @@ "source": "apache", "extensions": ["tga"] }, + "image/x-wmf": { + "source": "iana" + }, "image/x-xbitmap": { "source": "apache", "extensions": ["xbm"] @@ -7405,6 +8150,9 @@ "source": "apache", "extensions": ["xwd"] }, + "message/bhttp": { + "source": "iana" + }, "message/cpim": { "source": "iana" }, @@ -7447,7 +8195,16 @@ "source": "iana", "compressible": true }, + "message/mls": { + "source": "iana" + }, "message/news": { + "source": "apache" + }, + "message/ohttp-req": { + "source": "iana" + }, + "message/ohttp-res": { "source": "iana" }, "message/partial": { @@ -7457,10 +8214,10 @@ "message/rfc822": { "source": "iana", "compressible": true, - "extensions": ["eml","mime"] + "extensions": ["eml","mime","mht","mhtml"] }, "message/s-http": { - "source": "iana" + "source": "apache" }, "message/sip": { "source": "iana" @@ -7472,7 +8229,7 @@ "source": "iana" }, "message/vnd.si.simp": { - "source": "iana" + "source": "apache" }, "message/vnd.wfa.wsc": { "source": "iana", @@ -7500,6 +8257,10 @@ "compressible": false, "extensions": ["igs","iges"] }, + "model/jt": { + "source": "iana", + "extensions": ["jt"] + }, "model/mesh": { "source": "iana", "compressible": false, @@ -7513,8 +8274,13 @@ "source": "iana", "extensions": ["obj"] }, + "model/prc": { + "source": "iana", + "extensions": ["prc"] + }, "model/step": { - "source": "iana" + "source": "iana", + "extensions": ["step","stp","stpnc","p21","210"] }, "model/step+xml": { "source": "iana", @@ -7535,6 +8301,18 @@ "source": "iana", "extensions": ["stl"] }, + "model/u3d": { + "source": "iana", + "extensions": ["u3d"] + }, + "model/vnd.bary": { + "source": "iana", + "extensions": ["bary"] + }, + "model/vnd.cld": { + "source": "iana", + "extensions": ["cld"] + }, "model/vnd.collada+xml": { "source": "iana", "compressible": true, @@ -7582,7 +8360,8 @@ "extensions": ["x_t"] }, "model/vnd.pytha.pyox": { - "source": "iana" + "source": "iana", + "extensions": ["pyo","pyox"] }, "model/vnd.rosette.annotated-data-model": { "source": "iana" @@ -7591,6 +8370,10 @@ "source": "iana", "extensions": ["vds"] }, + "model/vnd.usda": { + "source": "iana", + "extensions": ["usda"] + }, "model/vnd.usdz+zip": { "source": "iana", "compressible": false, @@ -7736,7 +8519,7 @@ "source": "iana" }, "text/ecmascript": { - "source": "iana" + "source": "apache" }, "text/encaprtp": { "source": "iana" @@ -7759,6 +8542,9 @@ "text/grammar-ref-list": { "source": "iana" }, + "text/hl7v2": { + "source": "iana" + }, "text/html": { "source": "iana", "compressible": true, @@ -7769,7 +8555,9 @@ }, "text/javascript": { "source": "iana", - "compressible": true + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] }, "text/jcr-cnd": { "source": "iana" @@ -7785,7 +8573,7 @@ "text/markdown": { "source": "iana", "compressible": true, - "extensions": ["markdown","md"] + "extensions": ["md","markdown"] }, "text/mathml": { "source": "nginx", @@ -7830,6 +8618,9 @@ "text/prs.prop.logic": { "source": "iana" }, + "text/prs.texi": { + "source": "iana" + }, "text/raptorfec": { "source": "iana" }, @@ -7952,6 +8743,9 @@ "source": "iana", "charset": "UTF-8" }, + "text/vnd.exchangeable": { + "source": "iana" + }, "text/vnd.familysearch.gedcom": { "source": "iana", "extensions": ["ged"] @@ -8013,7 +8807,7 @@ "source": "iana" }, "text/vnd.si.uricatalogue": { - "source": "iana" + "source": "apache" }, "text/vnd.sosi": { "source": "iana" @@ -8027,6 +8821,9 @@ "source": "iana", "charset": "UTF-8" }, + "text/vnd.vcf": { + "source": "iana" + }, "text/vnd.wap.si": { "source": "iana" }, @@ -8041,12 +8838,19 @@ "source": "iana", "extensions": ["wmls"] }, + "text/vnd.zoo.kcl": { + "source": "iana" + }, "text/vtt": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": ["vtt"] }, + "text/wgsl": { + "source": "iana", + "extensions": ["wgsl"] + }, "text/x-asm": { "source": "apache", "extensions": ["s","asm"] @@ -8177,6 +8981,9 @@ "video/encaprtp": { "source": "iana" }, + "video/evc": { + "source": "iana" + }, "video/ffv1": { "source": "iana" }, @@ -8210,6 +9017,9 @@ "video/h265": { "source": "iana" }, + "video/h266": { + "source": "iana" + }, "video/iso.segment": { "source": "iana", "extensions": ["m4s"] @@ -8228,6 +9038,16 @@ "video/jxsv": { "source": "iana" }, + "video/lottie+json": { + "source": "iana", + "compressible": true + }, + "video/matroska": { + "source": "iana" + }, + "video/matroska-3d": { + "source": "iana" + }, "video/mj2": { "source": "iana", "extensions": ["mj2","mjp2"] @@ -8240,7 +9060,7 @@ }, "video/mp2t": { "source": "iana", - "extensions": ["ts"] + "extensions": ["ts","m2t","m2ts","mts"] }, "video/mp4": { "source": "iana", @@ -8403,11 +9223,14 @@ "video/vnd.objectvideo": { "source": "iana" }, + "video/vnd.planar": { + "source": "iana" + }, "video/vnd.radgamettools.bink": { "source": "iana" }, "video/vnd.radgamettools.smacker": { - "source": "iana" + "source": "apache" }, "video/vnd.sealed.mpeg1": { "source": "iana" diff --git a/mcp/node_modules/mime-db/package.json b/mcp/node_modules/mime-db/package.json index 32c14b8..289a370 100644 --- a/mcp/node_modules/mime-db/package.json +++ b/mcp/node_modules/mime-db/package.json @@ -1,7 +1,7 @@ { "name": "mime-db", "description": "Media Type Database", - "version": "1.52.0", + "version": "1.54.0", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)", @@ -19,23 +19,19 @@ ], "repository": "jshttp/mime-db", "devDependencies": { - "bluebird": "3.7.2", - "co": "4.6.0", - "cogent": "1.0.1", "csv-parse": "4.16.3", - "eslint": "7.32.0", + "eslint": "8.32.0", "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.1.1", + "eslint-plugin-promise": "6.1.1", "eslint-plugin-standard": "4.1.0", - "gnode": "0.1.2", "media-typer": "1.1.0", - "mocha": "9.2.1", + "mocha": "10.2.0", "nyc": "15.1.0", - "raw-body": "2.5.0", - "stream-to-array": "2.3.0" + "stream-to-array": "2.3.0", + "undici": "7.1.0" }, "files": [ "HISTORY.md", @@ -49,10 +45,10 @@ }, "scripts": { "build": "node scripts/build", - "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "fetch": "node scripts/fetch-apache && node scripts/fetch-iana && node scripts/fetch-nginx", "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test": "mocha --reporter spec --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", "test-cov": "nyc --reporter=html --reporter=text npm test", "update": "npm run fetch && npm run build", "version": "node scripts/version-history.js && git add HISTORY.md" diff --git a/mcp/node_modules/mime-types/HISTORY.md b/mcp/node_modules/mime-types/HISTORY.md index c5043b7..18473e4 100644 --- a/mcp/node_modules/mime-types/HISTORY.md +++ b/mcp/node_modules/mime-types/HISTORY.md @@ -1,3 +1,27 @@ +3.0.1 / 2025-03-26 +=================== + +* deps: mime-db@1.54.0 + +3.0.0 / 2024-08-31 +=================== + +* Drop support for node <18 +* deps: mime-db@1.53.0 +* resolve extension conflicts with mime-score (#119) + * asc -> application/pgp-signature is now application/pgp-keys + * mpp -> application/vnd.ms-project is now application/dash-patch+xml + * ac -> application/vnd.nokia.n-gage.ac+xml is now application/pkix-attr-cert + * bdoc -> application/x-bdoc is now application/bdoc + * wmz -> application/x-msmetafile is now application/x-ms-wmz + * xsl -> application/xslt+xml is now application/xml + * wav -> audio/wave is now audio/wav + * rtf -> text/rtf is now application/rtf + * xml -> text/xml is now application/xml + * mp4 -> video/mp4 is now application/mp4 + * mpg4 -> video/mp4 is now application/mp4 + + 2.1.35 / 2022-03-12 =================== diff --git a/mcp/node_modules/mime-types/README.md b/mcp/node_modules/mime-types/README.md index 48d2fb4..222d2b5 100644 --- a/mcp/node_modules/mime-types/README.md +++ b/mcp/node_modules/mime-types/README.md @@ -29,6 +29,19 @@ This is a [Node.js](https://nodejs.org/en/) module available through the $ npm install mime-types ``` +## Note on MIME Type Data and Semver + +This package considers the programmatic api as the semver compatibility. Additionally, the package which provides the MIME data +for this package (`mime-db`) *also* considers it's programmatic api as the semver contract. This means the MIME type resolution is *not* considered +in the semver bumps. + +In the past the version of `mime-db` was pinned to give two decision points when adopting MIME data changes. This is no longer true. We still update the +`mime-db` package here as a `minor` release when necessary, but will use a `^` range going forward. This means that if you want to pin your `mime-db` data +you will need to do it in your application. While this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is +a breaking change. + +If you wish to pin your `mime-db` version you can do that with overrides via your package manager of choice. See their documentation for how to correctly configure that. + ## Adding Types All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), diff --git a/mcp/node_modules/mime-types/index.js b/mcp/node_modules/mime-types/index.js index b9f34d5..c348cb6 100644 --- a/mcp/node_modules/mime-types/index.js +++ b/mcp/node_modules/mime-types/index.js @@ -14,6 +14,7 @@ var db = require('mime-db') var extname = require('path').extname +var mimeScore = require('./mimeScore') /** * Module variables. @@ -35,6 +36,7 @@ exports.extension = extension exports.extensions = Object.create(null) exports.lookup = lookup exports.types = Object.create(null) +exports._extensionConflicts = [] // Populate the extensions/types maps populateMaps(exports.extensions, exports.types) @@ -80,9 +82,7 @@ function contentType (str) { return false } - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str + var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str if (!mime) { return false @@ -137,7 +137,7 @@ function lookup (path) { // get the extension ("ext" or ".ext" or full path) var extension = extname('x.' + path) .toLowerCase() - .substr(1) + .slice(1) if (!extension) { return false @@ -152,9 +152,6 @@ function lookup (path) { */ function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - Object.keys(db).forEach(function forEachMimeType (type) { var mime = db[type] var exts = mime.extensions @@ -169,20 +166,46 @@ function populateMaps (extensions, types) { // extension -> mime for (var i = 0; i < exts.length; i++) { var extension = exts[i] + types[extension] = _preferredType(extension, types[extension], type) - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } + // DELETE (eventually): Capture extension->type maps that change as a + // result of switching to mime-score. This is just to help make reviewing + // PR #119 easier, and can be removed once that PR is approved. + const legacyType = _preferredTypeLegacy( + extension, + types[extension], + type + ) + if (legacyType !== types[extension]) { + exports._extensionConflicts.push([extension, legacyType, types[extension]]) } - - // set the extension -> mime - types[extension] = type } }) } + +// Resolve type conflict using mime-score +function _preferredType (ext, type0, type1) { + var score0 = type0 ? mimeScore(type0, db[type0].source) : 0 + var score1 = type1 ? mimeScore(type1, db[type1].source) : 0 + + return score0 > score1 ? type0 : type1 +} + +// Resolve type conflict using pre-mime-score logic +function _preferredTypeLegacy (ext, type0, type1) { + var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana'] + + var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0 + var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0 + + if ( + exports.types[extension] !== 'application/octet-stream' && + (score0 > score1 || + (score0 === score1 && + exports.types[extension]?.slice(0, 12) === 'application/')) + ) { + return type0 + } + + return score0 > score1 ? type0 : type1 +} diff --git a/mcp/node_modules/mime-types/package.json b/mcp/node_modules/mime-types/package.json index bbef696..79481ae 100644 --- a/mcp/node_modules/mime-types/package.json +++ b/mcp/node_modules/mime-types/package.json @@ -1,7 +1,7 @@ { "name": "mime-types", "description": "The ultimate javascript content-type utility.", - "version": "2.1.35", + "version": "3.0.1", "contributors": [ "Douglas Christopher Wilson ", "Jeremiah Senkpiel (https://searchbeam.jit.su)", @@ -14,23 +14,24 @@ ], "repository": "jshttp/mime-types", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "devDependencies": { - "eslint": "7.32.0", + "eslint": "8.33.0", "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", + "eslint-plugin-promise": "6.1.1", "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", + "mocha": "10.2.0", "nyc": "15.1.0" }, "files": [ "HISTORY.md", "LICENSE", - "index.js" + "index.js", + "mimeScore.js" ], "engines": { "node": ">= 0.6" diff --git a/mcp/node_modules/mime/.npmignore b/mcp/node_modules/mime/.npmignore deleted file mode 100644 index e69de29..0000000 diff --git a/mcp/node_modules/mime/CHANGELOG.md b/mcp/node_modules/mime/CHANGELOG.md deleted file mode 100644 index f127535..0000000 --- a/mcp/node_modules/mime/CHANGELOG.md +++ /dev/null @@ -1,164 +0,0 @@ -# Changelog - -## v1.6.0 (24/11/2017) -*No changelog for this release.* - ---- - -## v2.0.4 (24/11/2017) -- [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/node-mime/issues/182) -- [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/node-mime/issues/181) - ---- - -## v1.5.0 (22/11/2017) -- [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/node-mime/issues/179) -- [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/node-mime/issues/178) -- [**closed**] How it works in brownser ? [#176](https://github.com/broofa/node-mime/issues/176) -- [**closed**] Missing `./Mime` [#175](https://github.com/broofa/node-mime/issues/175) -- [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/node-mime/issues/167) - ---- - -## v2.0.3 (25/09/2017) -*No changelog for this release.* - ---- - -## v1.4.1 (25/09/2017) -- [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/node-mime/issues/172) - ---- - -## v2.0.2 (15/09/2017) -- [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/node-mime/issues/165) -- [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/node-mime/issues/164) -- [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/node-mime/issues/163) -- [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/node-mime/issues/162) -- [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/node-mime/issues/161) -- [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/node-mime/issues/160) -- [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/node-mime/issues/152) -- [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/node-mime/issues/139) -- [**V2**] reset mime-types [#124](https://github.com/broofa/node-mime/issues/124) -- [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/node-mime/issues/113) - ---- - -## v2.0.1 (14/09/2017) -- [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/node-mime/issues/171) -- [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/node-mime/issues/170) - ---- - -## v2.0.0 (12/09/2017) -- [**closed**] woff and woff2 [#168](https://github.com/broofa/node-mime/issues/168) - ---- - -## v1.4.0 (28/08/2017) -- [**closed**] support for ac3 voc files [#159](https://github.com/broofa/node-mime/issues/159) -- [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/node-mime/issues/158) -- [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/node-mime/issues/157) -- [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/node-mime/issues/147) -- [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/node-mime/issues/135) -- [**closed**] requested features [#131](https://github.com/broofa/node-mime/issues/131) -- [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/node-mime/issues/129) -- [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/node-mime/issues/120) -- [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/node-mime/issues/118) -- [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/node-mime/issues/108) -- [**closed**] don't make default_type global [#78](https://github.com/broofa/node-mime/issues/78) -- [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/node-mime/issues/74) - ---- - -## v1.3.6 (11/05/2017) -- [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/node-mime/issues/154) -- [**closed**] Error while installing mime [#153](https://github.com/broofa/node-mime/issues/153) -- [**closed**] application/manifest+json [#149](https://github.com/broofa/node-mime/issues/149) -- [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/node-mime/issues/141) -- [**closed**] charsets image/png undefined [#140](https://github.com/broofa/node-mime/issues/140) -- [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/node-mime/issues/130) -- [**closed**] how to support plist [#126](https://github.com/broofa/node-mime/issues/126) -- [**closed**] how does .types file format look like? [#123](https://github.com/broofa/node-mime/issues/123) -- [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/node-mime/issues/121) -- [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/node-mime/issues/117) - ---- - -## v1.3.4 (06/02/2015) -*No changelog for this release.* - ---- - -## v1.3.3 (06/02/2015) -*No changelog for this release.* - ---- - -## v1.3.1 (05/02/2015) -- [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/node-mime/issues/111) -- [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/node-mime/issues/110) -- [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/node-mime/issues/94) -- [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/node-mime/issues/77) - ---- - -## v1.3.0 (05/02/2015) -- [**closed**] Add common name? [#114](https://github.com/broofa/node-mime/issues/114) -- [**closed**] application/x-yaml [#104](https://github.com/broofa/node-mime/issues/104) -- [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/node-mime/issues/102) -- [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/node-mime/issues/99) -- [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/node-mime/issues/98) -- [**closed**] collaborators [#88](https://github.com/broofa/node-mime/issues/88) -- [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/node-mime/issues/87) -- [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/node-mime/issues/86) -- [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/node-mime/issues/81) -- [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/node-mime/issues/68) - ---- - -## v1.2.11 (15/08/2013) -- [**closed**] Update mime.types [#65](https://github.com/broofa/node-mime/issues/65) -- [**closed**] Publish a new version [#63](https://github.com/broofa/node-mime/issues/63) -- [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/node-mime/issues/55) -- [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/node-mime/issues/52) - ---- - -## v1.2.10 (25/07/2013) -- [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/node-mime/issues/62) -- [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/node-mime/issues/51) - ---- - -## v1.2.9 (17/01/2013) -- [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/node-mime/issues/49) -- [**closed**] Please add semicolon [#46](https://github.com/broofa/node-mime/issues/46) -- [**closed**] parse full mime types [#43](https://github.com/broofa/node-mime/issues/43) - ---- - -## v1.2.8 (10/01/2013) -- [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/node-mime/issues/47) -- [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/node-mime/issues/45) - ---- - -## v1.2.7 (19/10/2012) -- [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/node-mime/issues/41) -- [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/node-mime/issues/36) -- [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/node-mime/issues/30) -- [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/node-mime/issues/27) - ---- - -## v1.2.5 (16/02/2012) -- [**closed**] When looking up a types, check hasOwnProperty [#23](https://github.com/broofa/node-mime/issues/23) -- [**closed**] Bump version to 1.2.2 [#18](https://github.com/broofa/node-mime/issues/18) -- [**closed**] No license [#16](https://github.com/broofa/node-mime/issues/16) -- [**closed**] Some types missing that are used by html5/css3 [#13](https://github.com/broofa/node-mime/issues/13) -- [**closed**] npm install fails for 1.2.1 [#12](https://github.com/broofa/node-mime/issues/12) -- [**closed**] image/pjpeg + image/x-png [#10](https://github.com/broofa/node-mime/issues/10) -- [**closed**] symlink [#8](https://github.com/broofa/node-mime/issues/8) -- [**closed**] gzip [#2](https://github.com/broofa/node-mime/issues/2) -- [**closed**] ALL CAPS filenames return incorrect mime type [#1](https://github.com/broofa/node-mime/issues/1) diff --git a/mcp/node_modules/mime/LICENSE b/mcp/node_modules/mime/LICENSE deleted file mode 100644 index d3f46f7..0000000 --- a/mcp/node_modules/mime/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/mcp/node_modules/mime/README.md b/mcp/node_modules/mime/README.md deleted file mode 100644 index 506fbe5..0000000 --- a/mcp/node_modules/mime/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# mime - -Comprehensive MIME type mapping API based on mime-db module. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## Contributing / Testing - - npm run test - -## Command Line - - mime [path_string] - -E.g. - - > mime scripts/jquery.js - application/javascript - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - -```js -var mime = require('mime'); - -mime.lookup('/path/to/file.txt'); // => 'text/plain' -mime.lookup('file.txt'); // => 'text/plain' -mime.lookup('.TXT'); // => 'text/plain' -mime.lookup('htm'); // => 'text/html' -``` - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - -```js -mime.extension('text/html'); // => 'html' -mime.extension('application/octet-stream'); // => 'bin' -``` - -### mime.charsets.lookup() - -Map mime-type to charset - -```js -mime.charsets.lookup('text/plain'); // => 'UTF-8' -``` - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -Custom type mappings can be added on a per-project basis via the following APIs. - -### mime.define() - -Add custom mime/extension mappings - -```js -mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... -}); - -mime.lookup('x-sft'); // => 'text/x-some-format' -``` - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - -```js -mime.extension('text/x-some-format'); // => 'x-sf' -``` - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - -```js -mime.load('./my_project.types'); -``` -The .types file format is simple - See the `types` dir for examples. diff --git a/mcp/node_modules/mime/cli.js b/mcp/node_modules/mime/cli.js deleted file mode 100644 index 20b1ffe..0000000 --- a/mcp/node_modules/mime/cli.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var mime = require('./mime.js'); -var file = process.argv[2]; -var type = mime.lookup(file); - -process.stdout.write(type + '\n'); - diff --git a/mcp/node_modules/mime/mime.js b/mcp/node_modules/mime/mime.js deleted file mode 100644 index d7efbde..0000000 --- a/mcp/node_modules/mime/mime.js +++ /dev/null @@ -1,108 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts[i]]) { - console.warn((this._loading || "define()").replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts[i]] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/^.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Define built-in types -mime.define(require('./types.json')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/mcp/node_modules/mime/package.json b/mcp/node_modules/mime/package.json deleted file mode 100644 index 6bd24bc..0000000 --- a/mcp/node_modules/mime/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "url": "http://github.com/broofa", - "email": "robert@broofa.com" - }, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "url": "http://github.com/bentomas", - "email": "benjamin@benjaminthomas.org" - } - ], - "description": "A comprehensive library for mime-type mapping", - "license": "MIT", - "dependencies": {}, - "devDependencies": { - "github-release-notes": "0.13.1", - "mime-db": "1.31.0", - "mime-score": "1.1.0" - }, - "scripts": { - "prepare": "node src/build.js", - "changelog": "gren changelog --tags=all --generate --override", - "test": "node src/test.js" - }, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.6.0" -} diff --git a/mcp/node_modules/mime/src/build.js b/mcp/node_modules/mime/src/build.js deleted file mode 100644 index 4928e48..0000000 --- a/mcp/node_modules/mime/src/build.js +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const mimeScore = require('mime-score'); - -let db = require('mime-db'); -let chalk = require('chalk'); - -const STANDARD_FACET_SCORE = 900; - -const byExtension = {}; - -// Clear out any conflict extensions in mime-db -for (let type in db) { - let entry = db[type]; - entry.type = type; - - if (!entry.extensions) continue; - - entry.extensions.forEach(ext => { - if (ext in byExtension) { - const e0 = entry; - const e1 = byExtension[ext]; - e0.pri = mimeScore(e0.type, e0.source); - e1.pri = mimeScore(e1.type, e1.source); - - let drop = e0.pri < e1.pri ? e0 : e1; - let keep = e0.pri >= e1.pri ? e0 : e1; - drop.extensions = drop.extensions.filter(e => e !== ext); - - console.log(`${ext}: Keeping ${chalk.green(keep.type)} (${keep.pri}), dropping ${chalk.red(drop.type)} (${drop.pri})`); - } - byExtension[ext] = entry; - }); -} - -function writeTypesFile(types, path) { - fs.writeFileSync(path, JSON.stringify(types)); -} - -// Segregate into standard and non-standard types based on facet per -// https://tools.ietf.org/html/rfc6838#section-3.1 -const types = {}; - -Object.keys(db).sort().forEach(k => { - const entry = db[k]; - types[entry.type] = entry.extensions; -}); - -writeTypesFile(types, path.join(__dirname, '..', 'types.json')); diff --git a/mcp/node_modules/mime/src/test.js b/mcp/node_modules/mime/src/test.js deleted file mode 100644 index 42958a2..0000000 --- a/mcp/node_modules/mime/src/test.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('../mime'); -var assert = require('assert'); -var path = require('path'); - -// -// Test mime lookups -// - -assert.equal('text/plain', mime.lookup('text.txt')); // normal file -assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase -assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file -assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file -assert.equal('text/plain', mime.lookup('.txt')); // nameless -assert.equal('text/plain', mime.lookup('txt')); // extension-only -assert.equal('text/plain', mime.lookup('/txt')); // extension-less () -assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less -assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized -assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -assert.equal('txt', mime.extension(mime.types.text)); -assert.equal('html', mime.extension(mime.types.htm)); -assert.equal('bin', mime.extension('application/octet-stream')); -assert.equal('bin', mime.extension('application/octet-stream ')); -assert.equal('html', mime.extension(' text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html; charset=UTF-8 ')); -assert.equal('html', mime.extension('text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html ; charset=UTF-8')); -assert.equal('html', mime.extension('text/html;charset=UTF-8')); -assert.equal('html', mime.extension('text/Html;charset=UTF-8')); -assert.equal(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -assert.equal('font/woff', mime.lookup('file.woff')); -assert.equal('application/octet-stream', mime.lookup('file.buffer')); -// TODO: Uncomment once #157 is resolved -// assert.equal('audio/mp4', mime.lookup('file.m4a')); -assert.equal('font/otf', mime.lookup('file.otf')); - -// -// Test charsets -// - -assert.equal('UTF-8', mime.charsets.lookup('text/plain')); -assert.equal('UTF-8', mime.charsets.lookup(mime.types.js)); -assert.equal('UTF-8', mime.charsets.lookup(mime.types.json)); -assert.equal(undefined, mime.charsets.lookup(mime.types.bin)); -assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nAll tests passed'); diff --git a/mcp/node_modules/mime/types.json b/mcp/node_modules/mime/types.json deleted file mode 100644 index bec78ab..0000000 --- a/mcp/node_modules/mime/types.json +++ /dev/null @@ -1 +0,0 @@ -{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} \ No newline at end of file diff --git a/mcp/node_modules/ms/index.js b/mcp/node_modules/ms/index.js index 6a522b1..ea734fb 100644 --- a/mcp/node_modules/ms/index.js +++ b/mcp/node_modules/ms/index.js @@ -6,6 +6,7 @@ var s = 1000; var m = s * 60; var h = m * 60; var d = h * 24; +var w = d * 7; var y = d * 365.25; /** @@ -22,12 +23,12 @@ var y = d * 365.25; * @api public */ -module.exports = function(val, options) { +module.exports = function (val, options) { options = options || {}; var type = typeof val; if (type === 'string' && val.length > 0) { return parse(val); - } else if (type === 'number' && isNaN(val) === false) { + } else if (type === 'number' && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( @@ -49,7 +50,7 @@ function parse(str) { if (str.length > 100) { return; } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { @@ -64,6 +65,10 @@ function parse(str) { case 'yr': case 'y': return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; case 'days': case 'day': case 'd': @@ -106,16 +111,17 @@ function parse(str) { */ function fmtShort(ms) { - if (ms >= d) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { return Math.round(ms / d) + 'd'; } - if (ms >= h) { + if (msAbs >= h) { return Math.round(ms / h) + 'h'; } - if (ms >= m) { + if (msAbs >= m) { return Math.round(ms / m) + 'm'; } - if (ms >= s) { + if (msAbs >= s) { return Math.round(ms / s) + 's'; } return ms + 'ms'; @@ -130,23 +136,27 @@ function fmtShort(ms) { */ function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; } /** * Pluralization helper. */ -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); } diff --git a/mcp/node_modules/ms/license.md b/mcp/node_modules/ms/license.md index 69b6125..fa5d39b 100644 --- a/mcp/node_modules/ms/license.md +++ b/mcp/node_modules/ms/license.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Zeit, Inc. +Copyright (c) 2020 Vercel, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/mcp/node_modules/ms/package.json b/mcp/node_modules/ms/package.json index 6a31c81..4997189 100644 --- a/mcp/node_modules/ms/package.json +++ b/mcp/node_modules/ms/package.json @@ -1,8 +1,8 @@ { "name": "ms", - "version": "2.0.0", - "description": "Tiny milisecond conversion utility", - "repository": "zeit/ms", + "version": "2.1.3", + "description": "Tiny millisecond conversion utility", + "repository": "vercel/ms", "main": "./index", "files": [ "index.js" @@ -28,10 +28,11 @@ }, "license": "MIT", "devDependencies": { - "eslint": "3.19.0", + "eslint": "4.18.2", "expect.js": "0.3.1", - "husky": "0.13.3", - "lint-staged": "3.4.1", - "mocha": "3.4.1" + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1", + "prettier": "2.0.5" } } diff --git a/mcp/node_modules/ms/readme.md b/mcp/node_modules/ms/readme.md index 84a9974..0fc1abb 100644 --- a/mcp/node_modules/ms/readme.md +++ b/mcp/node_modules/ms/readme.md @@ -1,7 +1,6 @@ # ms -[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) -[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) +![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) Use this package to easily convert various time formats to milliseconds. @@ -17,35 +16,44 @@ ms('1m') // 60000 ms('5s') // 5000 ms('1y') // 31557600000 ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 ``` -### Convert from milliseconds +### Convert from Milliseconds ```js ms(60000) // "1m" ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" ms(ms('10 hours')) // "10h" ``` -### Time format written-out +### Time Format Written-Out ```js ms(60000, { long: true }) // "1 minute" ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" ms(ms('10 hours'), { long: true }) // "10 hours" ``` ## Features -- Works both in [node](https://nodejs.org) and in the browser. -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of equivalent ms is returned. +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned -## Caught a bug? +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device 2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! As always, you can run the tests using: `npm test` diff --git a/mcp/node_modules/negotiator/HISTORY.md b/mcp/node_modules/negotiator/HISTORY.md index a9a5449..63d537d 100644 --- a/mcp/node_modules/negotiator/HISTORY.md +++ b/mcp/node_modules/negotiator/HISTORY.md @@ -1,3 +1,9 @@ +1.0.0 / 2024-08-31 +================== + + * Drop support for node <18 + * Added an option preferred encodings array #59 + 0.6.3 / 2022-01-22 ================== diff --git a/mcp/node_modules/negotiator/README.md b/mcp/node_modules/negotiator/README.md index 82915e5..6fb7f2d 100644 --- a/mcp/node_modules/negotiator/README.md +++ b/mcp/node_modules/negotiator/README.md @@ -172,6 +172,10 @@ Returns the most preferred encoding from the client. Returns the most preferred encoding from a list of available encodings. +##### encoding(availableEncodings, { preferred }) + +Returns the most preferred encoding from a list of available encodings, while prioritizing based on `preferred` array between same-quality encodings. + ##### encodings() Returns an array of preferred encodings ordered by the client preference. @@ -181,6 +185,11 @@ Returns an array of preferred encodings ordered by the client preference. Returns an array of preferred encodings ordered by priority from a list of available encodings. +##### encodings(availableEncodings, { preferred }) + +Returns an array of preferred encodings ordered by priority from a list of +available encodings, while prioritizing based on `preferred` array between same-quality encodings. + ## See Also The [accepts](https://npmjs.org/package/accepts#readme) module builds on diff --git a/mcp/node_modules/negotiator/index.js b/mcp/node_modules/negotiator/index.js index 4788264..4f51315 100644 --- a/mcp/node_modules/negotiator/index.js +++ b/mcp/node_modules/negotiator/index.js @@ -44,13 +44,14 @@ Negotiator.prototype.charsets = function charsets(available) { return preferredCharsets(this.request.headers['accept-charset'], available); }; -Negotiator.prototype.encoding = function encoding(available) { - var set = this.encodings(available); +Negotiator.prototype.encoding = function encoding(available, opts) { + var set = this.encodings(available, opts); return set && set[0]; }; -Negotiator.prototype.encodings = function encodings(available) { - return preferredEncodings(this.request.headers['accept-encoding'], available); +Negotiator.prototype.encodings = function encodings(available, options) { + var opts = options || {}; + return preferredEncodings(this.request.headers['accept-encoding'], available, opts.preferred); }; Negotiator.prototype.language = function language(available) { diff --git a/mcp/node_modules/negotiator/lib/encoding.js b/mcp/node_modules/negotiator/lib/encoding.js index 8432cd7..9ebb633 100644 --- a/mcp/node_modules/negotiator/lib/encoding.js +++ b/mcp/node_modules/negotiator/lib/encoding.js @@ -96,7 +96,7 @@ function parseEncoding(str, i) { */ function getEncodingPriority(encoding, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; + var priority = {encoding: encoding, o: -1, q: 0, s: 0}; for (var i = 0; i < accepted.length; i++) { var spec = specify(encoding, accepted[i], index); @@ -123,6 +123,7 @@ function specify(encoding, spec, index) { } return { + encoding: encoding, i: index, o: spec.i, q: spec.q, @@ -135,14 +136,34 @@ function specify(encoding, spec, index) { * @public */ -function preferredEncodings(accept, provided) { +function preferredEncodings(accept, provided, preferred) { var accepts = parseAcceptEncoding(accept || ''); + var comparator = preferred ? function comparator (a, b) { + if (a.q !== b.q) { + return b.q - a.q // higher quality first + } + + var aPreferred = preferred.indexOf(a.encoding) + var bPreferred = preferred.indexOf(b.encoding) + + if (aPreferred === -1 && bPreferred === -1) { + // consider the original specifity/order + return (b.s - a.s) || (a.o - b.o) || (a.i - b.i) + } + + if (aPreferred !== -1 && bPreferred !== -1) { + return aPreferred - bPreferred // consider the preferred order + } + + return aPreferred === -1 ? 1 : -1 // preferred first + } : compareSpecs; + if (!provided) { // sorted list of all encodings return accepts .filter(isQuality) - .sort(compareSpecs) + .sort(comparator) .map(getFullEncoding); } @@ -151,7 +172,7 @@ function preferredEncodings(accept, provided) { }); // sorted list of accepted encodings - return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { + return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) { return provided[priorities.indexOf(priority)]; }); } @@ -162,7 +183,7 @@ function preferredEncodings(accept, provided) { */ function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; + return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i); } /** diff --git a/mcp/node_modules/negotiator/lib/mediaType.js b/mcp/node_modules/negotiator/lib/mediaType.js index 67309dd..8e402ea 100644 --- a/mcp/node_modules/negotiator/lib/mediaType.js +++ b/mcp/node_modules/negotiator/lib/mediaType.js @@ -69,7 +69,7 @@ function parseMediaType(str, i) { // get the value, unwrapping quotes var value = val && val[0] === '"' && val[val.length - 1] === '"' - ? val.substr(1, val.length - 2) + ? val.slice(1, -1) : val; if (key === 'q') { @@ -238,8 +238,8 @@ function splitKeyValuePair(str) { if (index === -1) { key = str; } else { - key = str.substr(0, index); - val = str.substr(index + 1); + key = str.slice(0, index); + val = str.slice(index + 1); } return [key, val]; diff --git a/mcp/node_modules/negotiator/package.json b/mcp/node_modules/negotiator/package.json index 297635f..e4bdc1e 100644 --- a/mcp/node_modules/negotiator/package.json +++ b/mcp/node_modules/negotiator/package.json @@ -1,7 +1,7 @@ { "name": "negotiator", "description": "HTTP content negotiation", - "version": "0.6.3", + "version": "1.0.0", "contributors": [ "Douglas Christopher Wilson ", "Federico Romero ", @@ -36,6 +36,7 @@ "scripts": { "lint": "eslint .", "test": "mocha --reporter spec --check-leaks --bail test/", + "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", "test-ci": "nyc --reporter=lcov --reporter=text npm test", "test-cov": "nyc --reporter=html --reporter=text npm test" } diff --git a/mcp/node_modules/path-to-regexp/LICENSE b/mcp/node_modules/path-to-regexp/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/mcp/node_modules/path-to-regexp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/mcp/node_modules/path-to-regexp/Readme.md b/mcp/node_modules/path-to-regexp/Readme.md deleted file mode 100644 index 95452a6..0000000 --- a/mcp/node_modules/path-to-regexp/Readme.md +++ /dev/null @@ -1,35 +0,0 @@ -# Path-to-RegExp - -Turn an Express-style path string such as `/user/:name` into a regular expression. - -**Note:** This is a legacy branch. You should upgrade to `1.x`. - -## Usage - -```javascript -var pathToRegexp = require('path-to-regexp'); -``` - -### pathToRegexp(path, keys, options) - - - **path** A string in the express format, an array of such strings, or a regular expression - - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings. - - **options** - - **options.sensitive** Defaults to false, set this to true to make routes case sensitive - - **options.strict** Defaults to false, set this to true to make the trailing slash matter. - - **options.end** Defaults to true, set this to false to only match the prefix of the URL. - -```javascript -var keys = []; -var exp = pathToRegexp('/foo/:bar', keys); -//keys = ['bar'] -//exp = /^\/foo\/(?:([^\/]+?))\/?$/i -``` - -## Live Demo - -You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/). - -## License - - MIT diff --git a/mcp/node_modules/path-to-regexp/index.js b/mcp/node_modules/path-to-regexp/index.js deleted file mode 100644 index 95d2f4b..0000000 --- a/mcp/node_modules/path-to-regexp/index.js +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Expose `pathToRegexp`. - */ - -module.exports = pathToRegexp; - -/** - * Match matching groups in a regular expression. - */ -var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; - -/** - * Normalize the given path string, - * returning a regular expression. - * - * An empty array should be passed, - * which will contain the placeholder - * key names. For example "/user/:id" will - * then contain ["id"]. - * - * @param {String|RegExp|Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - * @api private - */ - -function pathToRegexp(path, keys, options) { - options = options || {}; - keys = keys || []; - var strict = options.strict; - var end = options.end !== false; - var flags = options.sensitive ? '' : 'i'; - var lookahead = options.lookahead !== false; - var extraOffset = 0; - var keysOffset = keys.length; - var i = 0; - var name = 0; - var pos = 0; - var backtrack = ''; - var m; - - if (path instanceof RegExp) { - while (m = MATCHING_GROUP_REGEXP.exec(path.source)) { - if (m[0][0] === '\\') continue; - - keys.push({ - name: m[1] || name++, - optional: false, - offset: m.index - }); - } - - return path; - } - - if (Array.isArray(path)) { - // Map array parts into regexps and return their source. We also pass - // the same keys and options instance into every generation to get - // consistent matching groups before we join the sources together. - path = path.map(function (value) { - return pathToRegexp(value, keys, options).source; - }); - - return new RegExp(path.join('|'), flags); - } - - if (typeof path !== 'string') { - throw new TypeError('path must be a string, array of strings, or regular expression'); - } - - path = path.replace( - /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, - function (match, slash, format, key, capture, star, optional, offset) { - if (match[0] === '\\') { - backtrack += match; - pos += 2; - return match; - } - - if (match === '.') { - backtrack += '\\.'; - extraOffset += 1; - pos += 1; - return '\\.'; - } - - if (slash || format) { - backtrack = ''; - } else { - backtrack += path.slice(pos, offset); - } - - pos = offset + match.length; - - if (match === '*') { - extraOffset += 3; - return '(.*)'; - } - - if (match === '/(') { - backtrack += '/'; - extraOffset += 2; - return '/(?:'; - } - - slash = slash || ''; - format = format ? '\\.' : ''; - optional = optional || ''; - capture = capture ? - capture.replace(/\\.|\*/, function (m) { return m === '*' ? '(.*)' : m; }) : - (backtrack ? '((?:(?!/|' + backtrack + ').)+?)' : '([^/' + format + ']+?)'); - - keys.push({ - name: key, - optional: !!optional, - offset: offset + extraOffset - }); - - var result = '(?:' - + format + slash + capture - + (star ? '((?:[/' + format + '].+?)?)' : '') - + ')' - + optional; - - extraOffset += result.length - match.length; - - return result; - }); - - // This is a workaround for handling unnamed matching groups. - while (m = MATCHING_GROUP_REGEXP.exec(path)) { - if (m[0][0] === '\\') continue; - - if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { - keys.splice(keysOffset + i, 0, { - name: name++, // Unnamed matching groups must be consistently linear. - optional: false, - offset: m.index - }); - } - - i++; - } - - path += strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'; - - // If the path is non-ending, match until the end or a slash. - if (end) { - path += '$'; - } else if (path[path.length - 1] !== '/') { - path += lookahead ? '(?=/|$)' : '(?:/|$)'; - } - - return new RegExp('^' + path, flags); -}; diff --git a/mcp/node_modules/path-to-regexp/package.json b/mcp/node_modules/path-to-regexp/package.json deleted file mode 100644 index 23b4b6a..0000000 --- a/mcp/node_modules/path-to-regexp/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "path-to-regexp", - "description": "Express style path to RegExp utility", - "version": "0.1.12", - "files": [ - "index.js", - "LICENSE" - ], - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "keywords": [ - "express", - "regexp" - ], - "component": { - "scripts": { - "path-to-regexp": "index.js" - } - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/pillarjs/path-to-regexp.git" - }, - "devDependencies": { - "mocha": "^1.17.1", - "istanbul": "^0.2.6" - } -} diff --git a/mcp/node_modules/qs/.eslintrc b/mcp/node_modules/qs/.eslintrc index b692761..a89f60e 100644 --- a/mcp/node_modules/qs/.eslintrc +++ b/mcp/node_modules/qs/.eslintrc @@ -13,6 +13,7 @@ "func-name-matching": 0, "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], "indent": [2, 4], + "max-lines": 0, "max-lines-per-function": [2, { "max": 150 }], "max-params": [2, 18], "max-statements": [2, 100], diff --git a/mcp/node_modules/qs/CHANGELOG.md b/mcp/node_modules/qs/CHANGELOG.md index 02a6b50..dc8e879 100644 --- a/mcp/node_modules/qs/CHANGELOG.md +++ b/mcp/node_modules/qs/CHANGELOG.md @@ -1,3 +1,25 @@ +## **6.14.0** +- [New] `parse`: add `throwOnParameterLimitExceeded` option (#517) +- [Refactor] `parse`: use `utils.combine` more +- [patch] `parse`: add explicit `throwOnLimitExceeded` default +- [actions] use shared action; re-add finishers +- [meta] Fix changelog formatting bug +- [Deps] update `side-channel` +- [Dev Deps] update `es-value-fixtures`, `has-bigints`, `has-proto`, `has-symbols` +- [Tests] increase coverage + +## **6.13.1** +- [Fix] `stringify`: avoid a crash when a `filter` key is `null` +- [Fix] `utils.merge`: functions should not be stringified into keys +- [Fix] `parse`: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset +- [Fix] `stringify`: ensure a non-string `filter` does not crash +- [Refactor] use `__proto__` syntax instead of `Object.create` for null objects +- [Refactor] misc cleanup +- [Tests] `utils.merge`: add some coverage +- [Tests] fix a test case +- [actions] split out node 10-20, and 20+ +- [Dev Deps] update `es-value-fixtures`, `mock-property`, `object-inspect`, `tape` + ## **6.13.0** - [New] `parse`: add `strictDepth` option (#511) - [Tests] use `npm audit` instead of `aud` diff --git a/mcp/node_modules/qs/README.md b/mcp/node_modules/qs/README.md index 1e0d9ad..22c411d 100644 --- a/mcp/node_modules/qs/README.md +++ b/mcp/node_modules/qs/README.md @@ -49,7 +49,7 @@ assert.deepEqual(qs.parse('foo[bar]=baz'), { }); ``` -When using the `plainObjects` option the parsed value is returned as a null object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: +When using the `plainObjects` option the parsed value is returned as a null object, created via `{ __proto__: null }` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: ```javascript var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); @@ -135,6 +135,18 @@ var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); assert.deepEqual(limited, { a: 'b' }); ``` +If you want an error to be thrown whenever the a limit is exceeded (eg, `parameterLimit`, `arrayLimit`), set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a=1&b=2&c=3&d=4', { parameterLimit: 3, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Parameter limit exceeded. Only 3 parameters allowed.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `parameterLimit` and ignore the rest without throwing an error. + To bypass the leading question mark, use `ignoreQueryPrefix`: ```javascript @@ -286,6 +298,18 @@ var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); ``` +If you want to throw an error whenever the array limit is exceeded, set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a[1]=b', { arrayLimit: 0, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Array limit exceeded. Only 0 elements allowed in an array.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `arrayLimit` and if the limit is exceeded, the array will instead be converted to an object with the index as the key + To disable array parsing entirely, set `parseArrays` to `false`. ```javascript diff --git a/mcp/node_modules/qs/dist/qs.js b/mcp/node_modules/qs/dist/qs.js index 154e72e..f37989a 100644 --- a/mcp/node_modules/qs/dist/qs.js +++ b/mcp/node_modules/qs/dist/qs.js @@ -5,86 +5,137 @@ "use strict";var stringify=require(4),parse=require(3),formats=require(1);module.exports={formats:formats,parse:parse,stringify:stringify}; },{"1":1,"3":3,"4":4}],3:[function(require,module,exports){ -"use strict";var utils=require(5),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:utils.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},parseArrayValue=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},a=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i,o=t.parameterLimit===1/0?void 0:t.parameterLimit,l=a.split(t.delimiter,o),s=-1,n=t.charset;if(t.charsetSentinel)for(i=0;i-1&&(c=isArray(c)?[c]:c);var y=has.call(r,p);y&&"combine"===t.duplicates?r[p]=utils.combine(r[p],c):y&&"last"!==t.duplicates||(r[p]=c)}return r},parseObject=function(e,t,r,a){for(var i=a?t:parseArrayValue(t,r),o=e.length-1;o>=0;--o){var l,s=e[o];if("[]"===s&&r.parseArrays)l=r.allowEmptyArrays&&(""===i||r.strictNullHandling&&null===i)?[]:[].concat(i);else{l=r.plainObjects?Object.create(null):{};var n="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,p=r.decodeDotInKeys?n.replace(/%2E/g,"."):n,c=parseInt(p,10);r.parseArrays||""!==p?!isNaN(c)&&s!==p&&String(c)===p&&c>=0&&r.parseArrays&&c<=r.arrayLimit?(l=[])[c]=i:"__proto__"!==p&&(l[p]=i):l={0:i}}i=l}return i},parseKeys=function parseQueryStringKeys(e,t,r,a){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(i),s=l?i.slice(0,l.index):i,n=[];if(s){if(!r.plainObjects&&has.call(Object.prototype,s)&&!r.allowPrototypes)return;n.push(s)}for(var p=0;r.depth>0&&null!==(l=o.exec(i))&&p-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var a=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,t.throwOnLimitExceeded?a+1:a);if(t.throwOnLimitExceeded&&o.length>a)throw new RangeError("Parameter limit exceeded. Only "+a+" parameter"+(1===a?"":"s")+" allowed.");var l,n=-1,s=t.charset;if(t.charsetSentinel)for(l=0;l-1&&(p=isArray(p)?[p]:p);var f=has.call(r,d);f&&"combine"===t.duplicates?r[d]=utils.combine(r[d],p):f&&"last"!==t.duplicates||(r[d]=p)}return r},parseObject=function(e,t,r,i){var a=0;if(e.length>0&&"[]"===e[e.length-1]){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var l=i?t:parseArrayValue(t,r,a),n=e.length-1;n>=0;--n){var s,d=e[n];if("[]"===d&&r.parseArrays)s=r.allowEmptyArrays&&(""===l||r.strictNullHandling&&null===l)?[]:utils.combine([],l);else{s=r.plainObjects?{__proto__:null}:{};var p="["===d.charAt(0)&&"]"===d.charAt(d.length-1)?d.slice(1,-1):d,c=r.decodeDotInKeys?p.replace(/%2E/g,"."):p,u=parseInt(c,10);r.parseArrays||""!==c?!isNaN(u)&&d!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(s=[])[u]=l:"__proto__"!==c&&(s[c]=l):s={0:l}}l=s}return l},parseKeys=function parseQueryStringKeys(e,t,r,i){if(e){var a=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(a),n=l?a.slice(0,l.index):a,s=[];if(n){if(!r.plainObjects&&has.call(Object.prototype,n)&&!r.allowPrototypes)return;s.push(n)}for(var d=0;r.depth>0&&null!==(l=o.exec(a))&&d0?w.join(",")||null:void 0}];else if(isArray(f))E=f;else{var S=Object.keys(w);E=u?S.sort(u):S}var O=l?r.replace(/\./g,"%2E"):r,T=o&&isArray(w)&&1===w.length?O+"[]":O;if(a&&isArray(w)&&0===w.length)return T+"[]";for(var k=0;k0?y+d:""}; +"use strict";var getSideChannel=require(46),utils=require(5),formats=require(1),has=Object.prototype.hasOwnProperty,arrayPrefixGenerators={brackets:function brackets(e){return e+"[]"},comma:"comma",indices:function indices(e,r){return e+"["+r+"]"},repeat:function repeat(e){return e}},isArray=Array.isArray,push=Array.prototype.push,pushToArray=function(e,r){push.apply(e,isArray(r)?r:[r])},toISO=Date.prototype.toISOString,defaultFormat=formats.default,defaults={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,commaRoundTrip:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:utils.encode,encodeValuesOnly:!1,filter:void 0,format:defaultFormat,formatter:formats.formatters[defaultFormat],indices:!1,serializeDate:function serializeDate(e){return toISO.call(e)},skipNulls:!1,strictNullHandling:!1},isNonNullishPrimitive=function isNonNullishPrimitive(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e},sentinel={},stringify=function stringify(e,r,t,o,a,n,i,l,s,f,u,d,y,c,p,m,h,v){for(var g=e,w=v,b=0,A=!1;void 0!==(w=w.get(sentinel))&&!A;){var D=w.get(e);if(b+=1,void 0!==D){if(D===b)throw new RangeError("Cyclic object value");A=!0}void 0===w.get(sentinel)&&(b=0)}if("function"==typeof f?g=f(r,g):g instanceof Date?g=y(g):"comma"===t&&isArray(g)&&(g=utils.maybeMap(g,(function(e){return e instanceof Date?y(e):e}))),null===g){if(n)return s&&!m?s(r,defaults.encoder,h,"key",c):r;g=""}if(isNonNullishPrimitive(g)||utils.isBuffer(g))return s?[p(m?r:s(r,defaults.encoder,h,"key",c))+"="+p(s(g,defaults.encoder,h,"value",c))]:[p(r)+"="+p(String(g))];var S,E=[];if(void 0===g)return E;if("comma"===t&&isArray(g))m&&s&&(g=utils.maybeMap(g,s)),S=[{value:g.length>0?g.join(",")||null:void 0}];else if(isArray(f))S=f;else{var N=Object.keys(g);S=u?N.sort(u):N}var T=l?String(r).replace(/\./g,"%2E"):String(r),O=o&&isArray(g)&&1===g.length?T+"[]":T;if(a&&isArray(g)&&0===g.length)return O+"[]";for(var k=0;k0?c+y:""}; -},{"1":1,"29":29,"5":5}],5:[function(require,module,exports){ -"use strict";var formats=require(1),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,hexTable=function(){for(var e=[],r=0;r<256;++r)e.push("%"+((r<16?"0":"")+r.toString(16)).toUpperCase());return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n=limit?a.slice(i,i+limit):a,p=[],s=0;s=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||n===formats.RFC1738&&(40===f||41===f)?p[p.length]=u.charAt(s):f<128?p[p.length]=hexTable[f]:f<2048?p[p.length]=hexTable[192|f>>6]+hexTable[128|63&f]:f<55296||f>=57344?p[p.length]=hexTable[224|f>>12]+hexTable[128|f>>6&63]+hexTable[128|63&f]:(s+=1,f=65536+((1023&f)<<10|1023&u.charCodeAt(s)),p[p.length]=hexTable[240|f>>18]+hexTable[128|f>>12&63]+hexTable[128|f>>6&63]+hexTable[128|63&f])}c+=p.join("")}return c},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],o=0;o1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n=limit?a.slice(i,i+limit):a,p=[],f=0;f=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||n===formats.RFC1738&&(40===s||41===s)?p[p.length]=u.charAt(f):s<128?p[p.length]=hexTable[s]:s<2048?p[p.length]=hexTable[192|s>>6]+hexTable[128|63&s]:s<55296||s>=57344?p[p.length]=hexTable[224|s>>12]+hexTable[128|s>>6&63]+hexTable[128|63&s]:(f+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(f)),p[p.length]=hexTable[240|s>>18]+hexTable[128|s>>12&63]+hexTable[128|s>>6&63]+hexTable[128|63&s])}c+=p.join("")}return c},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],o=0;o-1?callBind(t):t}; +"use strict";var bind=require(24),$apply=require(8),$call=require(9),$reflectApply=require(11);module.exports=$reflectApply||bind.call($call,$apply); -},{"20":20,"8":8}],20:[function(require,module,exports){ -"use strict";var undefined,$Error=require(12),$EvalError=require(11),$RangeError=require(13),$ReferenceError=require(14),$SyntaxError=require(15),$TypeError=require(16),$URIError=require(17),$Function=Function,getEvalledConstructor=function(r){try{return $Function('"use strict"; return ('+r+").constructor;")()}catch(r){}},$gOPD=Object.getOwnPropertyDescriptor;if($gOPD)try{$gOPD({},"")}catch(r){$gOPD=null}var throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(r){try{return $gOPD(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,hasSymbols=require(24)(),hasProto=require(23)(),getProto=Object.getPrototypeOf||(hasProto?function(r){return r.__proto__}:null),needsEval={},TypedArray="undefined"!=typeof Uint8Array&&getProto?getProto(Uint8Array):undefined,INTRINSICS={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?undefined:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?undefined:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols&&getProto?getProto((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols&&getProto?getProto((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols&&getProto?getProto(""[Symbol.iterator]()):undefined,"%Symbol%":hasSymbols?Symbol:undefined,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":$URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet};if(getProto)try{null.error}catch(r){var errorProto=getProto(getProto(r));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function doEval(r){var e;if("%AsyncFunction%"===r)e=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)e=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)e=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var t=doEval("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===r){var o=doEval("%AsyncGenerator%");o&&getProto&&(e=getProto(o.prototype))}return INTRINSICS[r]=e,e},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=require(19),hasOwn=require(26),$concat=bind.call(Function.call,Array.prototype.concat),$spliceApply=bind.call(Function.apply,Array.prototype.splice),$replace=bind.call(Function.call,String.prototype.replace),$strSlice=bind.call(Function.call,String.prototype.slice),$exec=bind.call(Function.call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(r){var e=$strSlice(r,0,1),t=$strSlice(r,-1);if("%"===e&&"%"!==t)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==e)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var o=[];return $replace(r,rePropName,(function(r,e,t,n){o[o.length]=t?$replace(n,reEscapeChar,"$1"):e||r})),o},getBaseIntrinsic=function getBaseIntrinsic(r,e){var t,o=r;if(hasOwn(LEGACY_ALIASES,o)&&(o="%"+(t=LEGACY_ALIASES[o])[0]+"%"),hasOwn(INTRINSICS,o)){var n=INTRINSICS[o];if(n===needsEval&&(n=doEval(o)),void 0===n&&!e)throw new $TypeError("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:t,name:o,value:n}}throw new $SyntaxError("intrinsic "+r+" does not exist!")};module.exports=function GetIntrinsic(r,e){if("string"!=typeof r||0===r.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,r))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=stringToPath(r),o=t.length>0?t[0]:"",n=getBaseIntrinsic("%"+o+"%",e),a=n.name,y=n.value,i=!1,p=n.alias;p&&(o=p[0],$spliceApply(t,$concat([0,1],p)));for(var d=1,s=!0;d=t.length){var c=$gOPD(y,f);y=(s=!!c)&&"get"in c&&!("originalValue"in c.get)?c.get:y[f]}else s=hasOwn(y,f),y=y[f];s&&!i&&(INTRINSICS[a]=y)}}return y}; +},{"11":11,"24":24,"8":8,"9":9}],8:[function(require,module,exports){ +"use strict";module.exports=Function.prototype.apply; -},{"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"19":19,"23":23,"24":24,"26":26}],8:[function(require,module,exports){ -"use strict";var bind=require(19),GetIntrinsic=require(20),setFunctionLength=require(28),$TypeError=require(16),$apply=GetIntrinsic("%Function.prototype.apply%"),$call=GetIntrinsic("%Function.prototype.call%"),$reflectApply=GetIntrinsic("%Reflect.apply%",!0)||bind.call($call,$apply),$defineProperty=require(10),$max=GetIntrinsic("%Math.max%");module.exports=function callBind(e){if("function"!=typeof e)throw new $TypeError("a function is required");var n=$reflectApply(bind,$call,arguments);return setFunctionLength(n,1+$max(0,e.length-(arguments.length-1)),!0)};var applyBind=function applyBind(){return $reflectApply(bind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind; +},{}],9:[function(require,module,exports){ +"use strict";module.exports=Function.prototype.call; -},{"10":10,"16":16,"19":19,"20":20,"28":28}],16:[function(require,module,exports){ +},{}],24:[function(require,module,exports){ +"use strict";var implementation=require(23);module.exports=Function.prototype.bind||implementation; + +},{"23":23}],11:[function(require,module,exports){ +"use strict";module.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply; + +},{}],10:[function(require,module,exports){ +"use strict";var bind=require(24),$TypeError=require(20),$call=require(9),$actualApply=require(7);module.exports=function callBindBasic(r){if(r.length<1||"function"!=typeof r[0])throw new $TypeError("a function is required");return $actualApply(bind,$call,r)}; + +},{"20":20,"24":24,"7":7,"9":9}],20:[function(require,module,exports){ "use strict";module.exports=TypeError; +},{}],12:[function(require,module,exports){ +"use strict";var GetIntrinsic=require(25),callBindBasic=require(10),$indexOf=callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]);module.exports=function callBoundIntrinsic(i,n){var t=GetIntrinsic(i,!!n);return"function"==typeof t&&$indexOf(i,".prototype.")>-1?callBindBasic([t]):t}; + +},{"10":10,"25":25}],25:[function(require,module,exports){ +"use strict";var undefined,$Object=require(22),$Error=require(16),$EvalError=require(15),$RangeError=require(17),$ReferenceError=require(18),$SyntaxError=require(19),$TypeError=require(20),$URIError=require(21),abs=require(34),floor=require(35),max=require(37),min=require(38),pow=require(39),round=require(40),sign=require(41),$Function=Function,getEvalledConstructor=function(r){try{return $Function('"use strict"; return ('+r+").constructor;")()}catch(r){}},$gOPD=require(30),$defineProperty=require(14),throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(r){try{return $gOPD(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,hasSymbols=require(31)(),getProto=require(28),$ObjectGPO=require(26),$ReflectGPO=require(27),$apply=require(8),$call=require(9),needsEval={},TypedArray="undefined"!=typeof Uint8Array&&getProto?getProto(Uint8Array):undefined,INTRINSICS={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?undefined:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?undefined:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$Error,"%eval%":eval,"%EvalError%":$EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols&&getProto?getProto((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":$Object,"%Object.getOwnPropertyDescriptor%":$gOPD,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":$RangeError,"%ReferenceError%":$ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols&&getProto?getProto((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols&&getProto?getProto(""[Symbol.iterator]()):undefined,"%Symbol%":hasSymbols?Symbol:undefined,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":$URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet,"%Function.prototype.call%":$call,"%Function.prototype.apply%":$apply,"%Object.defineProperty%":$defineProperty,"%Object.getPrototypeOf%":$ObjectGPO,"%Math.abs%":abs,"%Math.floor%":floor,"%Math.max%":max,"%Math.min%":min,"%Math.pow%":pow,"%Math.round%":round,"%Math.sign%":sign,"%Reflect.getPrototypeOf%":$ReflectGPO};if(getProto)try{null.error}catch(r){var errorProto=getProto(getProto(r));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function doEval(r){var e;if("%AsyncFunction%"===r)e=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)e=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)e=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var t=doEval("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===r){var o=doEval("%AsyncGenerator%");o&&getProto&&(e=getProto(o.prototype))}return INTRINSICS[r]=e,e},LEGACY_ALIASES={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=require(24),hasOwn=require(33),$concat=bind.call($call,Array.prototype.concat),$spliceApply=bind.call($apply,Array.prototype.splice),$replace=bind.call($call,String.prototype.replace),$strSlice=bind.call($call,String.prototype.slice),$exec=bind.call($call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(r){var e=$strSlice(r,0,1),t=$strSlice(r,-1);if("%"===e&&"%"!==t)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==e)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var o=[];return $replace(r,rePropName,(function(r,e,t,n){o[o.length]=t?$replace(n,reEscapeChar,"$1"):e||r})),o},getBaseIntrinsic=function getBaseIntrinsic(r,e){var t,o=r;if(hasOwn(LEGACY_ALIASES,o)&&(o="%"+(t=LEGACY_ALIASES[o])[0]+"%"),hasOwn(INTRINSICS,o)){var n=INTRINSICS[o];if(n===needsEval&&(n=doEval(o)),void 0===n&&!e)throw new $TypeError("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:t,name:o,value:n}}throw new $SyntaxError("intrinsic "+r+" does not exist!")};module.exports=function GetIntrinsic(r,e){if("string"!=typeof r||0===r.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,r))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=stringToPath(r),o=t.length>0?t[0]:"",n=getBaseIntrinsic("%"+o+"%",e),a=n.name,i=n.value,y=!1,p=n.alias;p&&(o=p[0],$spliceApply(t,$concat([0,1],p)));for(var s=1,d=!0;s=t.length){var c=$gOPD(i,f);i=(d=!!c)&&"get"in c&&!("originalValue"in c.get)?c.get:i[f]}else d=hasOwn(i,f),i=i[f];d&&!y&&(INTRINSICS[a]=i)}}return i}; + +},{"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"24":24,"26":26,"27":27,"28":28,"30":30,"31":31,"33":33,"34":34,"35":35,"37":37,"38":38,"39":39,"40":40,"41":41,"8":8,"9":9}],13:[function(require,module,exports){ +"use strict";var hasProtoAccessor,callBind=require(10),gOPD=require(30);try{hasProtoAccessor=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var desc=!!hasProtoAccessor&&gOPD&&gOPD(Object.prototype,"__proto__"),$Object=Object,$getPrototypeOf=$Object.getPrototypeOf;module.exports=desc&&"function"==typeof desc.get?callBind([desc.get]):"function"==typeof $getPrototypeOf&&function getDunder(t){return $getPrototypeOf(null==t?t:$Object(t))}; + +},{"10":10,"30":30}],30:[function(require,module,exports){ +"use strict";var $gOPD=require(29);if($gOPD)try{$gOPD([],"length")}catch(g){$gOPD=null}module.exports=$gOPD; + +},{"29":29}],14:[function(require,module,exports){ +"use strict";var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; + +},{}],15:[function(require,module,exports){ +"use strict";module.exports=EvalError; + +},{}],16:[function(require,module,exports){ +"use strict";module.exports=Error; + +},{}],17:[function(require,module,exports){ +"use strict";module.exports=RangeError; + +},{}],18:[function(require,module,exports){ +"use strict";module.exports=ReferenceError; + },{}],19:[function(require,module,exports){ -"use strict";var implementation=require(18);module.exports=Function.prototype.bind||implementation; - -},{"18":18}],10:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),$defineProperty=GetIntrinsic("%Object.defineProperty%",!0)||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; - -},{"20":20}],28:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),define=require(9),hasDescriptors=require(22)(),gOPD=require(21),$TypeError=require(16),$floor=GetIntrinsic("%Math.floor%");module.exports=function setFunctionLength(e,r){if("function"!=typeof e)throw new $TypeError("`fn` is not a function");if("number"!=typeof r||r<0||r>4294967295||$floor(r)!==r)throw new $TypeError("`length` must be a positive 32-bit integer");var t=arguments.length>2&&!!arguments[2],i=!0,n=!0;if("length"in e&&gOPD){var o=gOPD(e,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(n=!1)}return(i||n||!t)&&(hasDescriptors?define(e,"length",r,!0,!0):define(e,"length",r)),e}; - -},{"16":16,"20":20,"21":21,"22":22,"9":9}],9:[function(require,module,exports){ -"use strict";var $defineProperty=require(10),$SyntaxError=require(15),$TypeError=require(16),gopd=require(21);module.exports=function defineDataProperty(e,r,o){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new $TypeError("`obj` must be an object or a function`");if("string"!=typeof r&&"symbol"!=typeof r)throw new $TypeError("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new $TypeError("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new $TypeError("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,t=arguments.length>5?arguments[5]:null,i=arguments.length>6&&arguments[6],a=!!gopd&&gopd(e,r);if($defineProperty)$defineProperty(e,r,{configurable:null===t&&a?a.configurable:!t,enumerable:null===n&&a?a.enumerable:!n,value:o,writable:null===l&&a?a.writable:!l});else{if(!i&&(n||l||t))throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[r]=o}}; - -},{"10":10,"15":15,"16":16,"21":21}],15:[function(require,module,exports){ "use strict";module.exports=SyntaxError; },{}],21:[function(require,module,exports){ -"use strict";var GetIntrinsic=require(20),$gOPD=GetIntrinsic("%Object.getOwnPropertyDescriptor%",!0);if($gOPD)try{$gOPD([],"length")}catch(t){$gOPD=null}module.exports=$gOPD; - -},{"20":20}],11:[function(require,module,exports){ -"use strict";module.exports=EvalError; - -},{}],12:[function(require,module,exports){ -"use strict";module.exports=Error; - -},{}],13:[function(require,module,exports){ -"use strict";module.exports=RangeError; - -},{}],14:[function(require,module,exports){ -"use strict";module.exports=ReferenceError; - -},{}],17:[function(require,module,exports){ "use strict";module.exports=URIError; -},{}],18:[function(require,module,exports){ -"use strict";var ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,funcType="[object Function]",concatty=function concatty(t,n){for(var r=[],o=0;o-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null;function wrapQuotes(t,e,r){var n="double"===(r.quoteStyle||e)?'"':"'";return n+t+n}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&"single"!==o.quoteStyle&&"double"!==o.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var f=nameOf(t),s=arrObjKeys(t,inspect);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(s.length>0?" { "+$join.call(s,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}return wrapQuotes($replace.call($replace.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,quotes={__proto__:null,double:'"',single:"'"},quoteREs={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function wrapQuotes(t,e,r){var n=r.quoteStyle||e,o=quotes[n];return o+t+o}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&!has(quotes,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var s=nameOf(t),f=arrObjKeys(t,inspect);return"[Function"+(s?": "+s:" (anonymous)")+"]"+(f.length>0?" { "+$join.call(f,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}var o=quoteREs[e.quoteStyle||"single"];return o.lastIndex=0,wrapQuotes($replace.call($replace.call(t,o,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o -1) { return val.split(','); } + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + return val; }; @@ -57,8 +62,17 @@ var parseValues = function parseQueryStringValues(str, options) { var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded ? limit + 1 : limit + ); + + if (options.throwOnLimitExceeded && parts.length > limit) { + throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); + } + var skipIndex = -1; // Keep track of where the utf8 sentinel was found var i; @@ -86,14 +100,20 @@ var parseValues = function parseQueryStringValues(str, options) { var bracketEqualsPos = part.indexOf(']='); var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - var key, val; + var key; + var val; if (pos === -1) { key = options.decoder(part, defaults.decoder, charset, 'key'); val = options.strictNullHandling ? null : ''; } else { key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), function (encodedVal) { return options.decoder(encodedVal, defaults.decoder, charset, 'value'); } @@ -101,7 +121,7 @@ var parseValues = function parseQueryStringValues(str, options) { } if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); + val = interpretNumericEntities(String(val)); } if (part.indexOf('[]=') > -1) { @@ -120,7 +140,13 @@ var parseValues = function parseQueryStringValues(str, options) { }; var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === '[]') { + var parentKey = chain.slice(0, -1).join(''); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); for (var i = chain.length - 1; i >= 0; --i) { var obj; @@ -129,9 +155,9 @@ var parseObject = function (chain, val, options, valuesParsed) { if (root === '[]' && options.parseArrays) { obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) ? [] - : [].concat(leaf); + : utils.combine([], leaf); } else { - obj = options.plainObjects ? Object.create(null) : {}; + obj = options.plainObjects ? { __proto__: null } : {}; var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; var index = parseInt(decodedRoot, 10); @@ -234,6 +260,11 @@ var normalizeParseOptions = function normalizeParseOptions(opts) { if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); } + + if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { + throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); + } + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; @@ -265,7 +296,8 @@ var normalizeParseOptions = function normalizeParseOptions(opts) { parseArrays: opts.parseArrays !== false, plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false }; }; @@ -273,11 +305,11 @@ module.exports = function (str, opts) { var options = normalizeParseOptions(opts); if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; + return options.plainObjects ? { __proto__: null } : {}; } var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; + var obj = options.plainObjects ? { __proto__: null } : {}; // Iterate over the keys and setup the new object diff --git a/mcp/node_modules/qs/lib/stringify.js b/mcp/node_modules/qs/lib/stringify.js index 9b934d6..2666eaf 100644 --- a/mcp/node_modules/qs/lib/stringify.js +++ b/mcp/node_modules/qs/lib/stringify.js @@ -34,11 +34,13 @@ var defaults = { arrayFormat: 'indices', charset: 'utf-8', charsetSentinel: false, + commaRoundTrip: false, delimiter: '&', encode: true, encodeDotInKeys: false, encoder: utils.encode, encodeValuesOnly: false, + filter: void undefined, format: defaultFormat, formatter: formats.formatters[defaultFormat], // deprecated @@ -150,7 +152,7 @@ var stringify = function stringify( objKeys = sort ? keys.sort(sort) : keys; } - var encodedPrefix = encodeDotInKeys ? prefix.replace(/\./g, '%2E') : prefix; + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; @@ -160,13 +162,15 @@ var stringify = function stringify( for (var j = 0; j < objKeys.length; ++j) { var key = objKeys[j]; - var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; + var value = typeof key === 'object' && key && typeof key.value !== 'undefined' + ? key.value + : obj[key]; if (skipNulls && value === null) { continue; } - var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\./g, '%2E') : key; + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); @@ -257,7 +261,7 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { arrayFormat: arrayFormat, charset: charset, charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - commaRoundTrip: opts.commaRoundTrip, + commaRoundTrip: !!opts.commaRoundTrip, delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, @@ -308,12 +312,13 @@ module.exports = function (object, opts) { var sideChannel = getSideChannel(); for (var i = 0; i < objKeys.length; ++i) { var key = objKeys[i]; + var value = obj[key]; - if (options.skipNulls && obj[key] === null) { + if (options.skipNulls && value === null) { continue; } pushToArray(keys, stringify( - obj[key], + value, key, generateArrayPrefix, commaRoundTrip, diff --git a/mcp/node_modules/qs/lib/utils.js b/mcp/node_modules/qs/lib/utils.js index 7c860f1..2905ff0 100644 --- a/mcp/node_modules/qs/lib/utils.js +++ b/mcp/node_modules/qs/lib/utils.js @@ -34,7 +34,7 @@ var compactQueue = function compactQueue(queue) { }; var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; + var obj = options && options.plainObjects ? { __proto__: null } : {}; for (var i = 0; i < source.length; ++i) { if (typeof source[i] !== 'undefined') { obj[i] = source[i]; @@ -50,11 +50,14 @@ var merge = function merge(target, source, options) { return target; } - if (typeof source !== 'object') { + if (typeof source !== 'object' && typeof source !== 'function') { if (isArray(target)) { target.push(source); } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + if ( + (options && (options.plainObjects || options.allowPrototypes)) + || !has.call(Object.prototype, source) + ) { target[source] = true; } } else { @@ -108,7 +111,7 @@ var assign = function assignSingleSource(target, source) { }, target); }; -var decode = function (str, decoder, charset) { +var decode = function (str, defaultDecoder, charset) { var strWithoutPlus = str.replace(/\+/g, ' '); if (charset === 'iso-8859-1') { // unescape never throws, no try...catch needed: diff --git a/mcp/node_modules/qs/package.json b/mcp/node_modules/qs/package.json index 6dae052..e4144d0 100644 --- a/mcp/node_modules/qs/package.json +++ b/mcp/node_modules/qs/package.json @@ -2,7 +2,7 @@ "name": "qs", "description": "A querystring parser that supports nesting and arrays, with a depth limit", "homepage": "https://github.com/ljharb/qs", - "version": "6.13.0", + "version": "6.14.0", "repository": { "type": "git", "url": "https://github.com/ljharb/qs.git" @@ -31,7 +31,7 @@ "node": ">=0.6" }, "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "devDependencies": { "@browserify/envify": "^6.0.0", @@ -41,27 +41,29 @@ "bundle-collapser": "^1.4.0", "common-shakeify": "~1.0.0", "eclint": "^2.8.1", - "es-value-fixtures": "^1.4.2", + "es-value-fixtures": "^1.7.0", "eslint": "=8.8.0", "evalmd": "^0.0.19", "for-each": "^0.3.3", "glob": "=10.3.7", + "has-bigints": "^1.1.0", "has-override-mistake": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "iconv-lite": "^0.5.1", "in-publish": "^2.0.1", "jackspeak": "=2.1.1", "mkdirp": "^0.5.5", - "mock-property": "^1.0.3", + "mock-property": "^1.1.0", "module-deps": "^6.2.3", "npmignore": "^0.3.1", "nyc": "^10.3.2", - "object-inspect": "^1.13.2", + "object-inspect": "^1.13.3", "qs-iconv": "^1.0.4", "safe-publish-latest": "^2.0.0", "safer-buffer": "^2.1.2", - "tape": "^5.8.1", + "tape": "^5.9.0", "unassertify": "^3.0.1" }, "scripts": { diff --git a/mcp/node_modules/qs/test/parse.js b/mcp/node_modules/qs/test/parse.js index 8a2f487..32cdfd8 100644 --- a/mcp/node_modules/qs/test/parse.js +++ b/mcp/node_modules/qs/test/parse.js @@ -9,6 +9,7 @@ var SaferBuffer = require('safer-buffer').Buffer; var v = require('es-value-fixtures'); var inspect = require('object-inspect'); var emptyTestCases = require('./empty-keys-cases').emptyTestCases; +var hasProto = require('has-proto')(); var qs = require('../'); var utils = require('../lib/utils'); @@ -117,7 +118,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should decode dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { + t.test('decodes dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { st.deepEqual( qs.parse( 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', @@ -130,7 +131,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should throw when decodeDotInKeys is not of type boolean', function (st) { + t.test('throws when decodeDotInKeys is not of type boolean', function (st) { st['throws']( function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); }, TypeError @@ -160,7 +161,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { + t.test('throws when allowEmptyArrays is not of type boolean', function (st) { st['throws']( function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); }, TypeError @@ -443,7 +444,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should not throw when a native prototype has an enumerable property', function (st) { + t.test('does not throw when a native prototype has an enumerable property', function (st) { st.intercept(Object.prototype, 'crash', { value: '' }); st.intercept(Array.prototype, 'crash', { value: '' }); @@ -691,9 +692,8 @@ test('parse()', function (t) { st.end(); }); - t.test('parses null objects correctly', { skip: !Object.create }, function (st) { - var a = Object.create(null); - a.b = 'c'; + t.test('parses null objects correctly', { skip: !hasProto }, function (st) { + var a = { __proto__: null, b: 'c' }; st.deepEqual(qs.parse(a), { b: 'c' }); var result = qs.parse({ a: a }); @@ -870,17 +870,25 @@ test('parse()', function (t) { st.end(); }); - t.test('can return null objects', { skip: !Object.create }, function (st) { - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; + t.test('can return null objects', { skip: !hasProto }, function (st) { + var expected = { + __proto__: null, + a: { + __proto__: null, + b: 'c', + hasOwnProperty: 'd' + } + }; st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); - st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a[0] = 'b'; - expectedArray.a.c = 'd'; + st.deepEqual(qs.parse(null, { plainObjects: true }), { __proto__: null }); + var expectedArray = { + __proto__: null, + a: { + __proto__: null, + 0: 'b', + c: 'd' + } + }; st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); st.end(); }); @@ -957,7 +965,7 @@ test('parse()', function (t) { st.end(); }); - t.test('should ignore an utf8 sentinel with an unknown value', function (st) { + t.test('ignores an utf8 sentinel with an unknown value', function (st) { st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { Ăž: 'Ăž' }); st.end(); }); @@ -998,6 +1006,15 @@ test('parse()', function (t) { st.end(); }); + t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) { + st.deepEqual( + qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }), + { b: '', a: ['1,â˜ș'] } + ); + + st.end(); + }); + t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) { st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' }); st.end(); @@ -1018,6 +1035,95 @@ test('parse()', function (t) { st.end(); }); + t.test('parameter limit tests', function (st) { + st.test('does not throw error when within parameter limit', function (sst) { + var result = qs.parse('a=1&b=2&c=3', { parameterLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean' + ); + sst.end(); + }); + + st.test('throws error when parameter limit exceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Parameter limit exceeded. Only 3 parameters allowed.'), + 'throws error when parameter limit is exceeded' + ); + sst.end(); + }); + + st.test('silently truncates when throwOnLimitExceeded is not given', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3 }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('silently truncates when parameter limit exceeded without error', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3, throwOnLimitExceeded: false }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('allows unlimited parameters when parameterLimit set to Infinity', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: Infinity }); + sst.deepEqual(result, { a: '1', b: '2', c: '3', d: '4', e: '5', f: '6' }, 'parses all parameters without truncation'); + sst.end(); + }); + + st.end(); + }); + + t.test('array limit tests', function (st) { + st.test('does not throw error when array is within limit', function (sst) { + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: ['1', '2', '3'] }, 'parses array without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean for array limit', function (sst) { + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean for array limit' + ); + sst.end(); + }); + + st.test('throws error when array limit exceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), + 'throws error when array limit is exceeded' + ); + sst.end(); + }); + + st.test('converts array to object if length is greater than limit', function (sst) { + var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 }); + + sst.deepEqual(result, { a: { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6' } }, 'parses into object if array length is greater than limit'); + sst.end(); + }); + + st.end(); + }); + t.end(); }); @@ -1076,7 +1182,7 @@ test('qs strictDepth option - throw cases', function (t) { qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); }, RangeError, - 'Should throw RangeError' + 'throws RangeError' ); st.end(); }); @@ -1087,7 +1193,7 @@ test('qs strictDepth option - throw cases', function (t) { qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true }); }, RangeError, - 'Should throw RangeError' + 'throws RangeError' ); st.end(); }); @@ -1098,7 +1204,7 @@ test('qs strictDepth option - throw cases', function (t) { qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true }); }, RangeError, - 'Should throw RangeError' + 'throws RangeError' ); st.end(); }); @@ -1109,7 +1215,7 @@ test('qs strictDepth option - throw cases', function (t) { qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true }); }, RangeError, - 'Should throw RangeError' + 'throws RangeError' ); st.end(); }); @@ -1123,7 +1229,7 @@ test('qs strictDepth option - non-throw cases', function (t) { qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true }); }, RangeError, - 'Should not throw RangeError' + 'does not throw RangeError' ); st.end(); }); @@ -1132,7 +1238,7 @@ test('qs strictDepth option - non-throw cases', function (t) { st.doesNotThrow( function () { var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true }); - st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly'); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); } ); st.end(); @@ -1142,7 +1248,7 @@ test('qs strictDepth option - non-throw cases', function (t) { st.doesNotThrow( function () { var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); - st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'Should parse with depth limit'); + st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'parses with depth limit'); } ); st.end(); @@ -1152,7 +1258,7 @@ test('qs strictDepth option - non-throw cases', function (t) { st.doesNotThrow( function () { var result = qs.parse('a[b]=c', { depth: 1 }); - st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly'); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); } ); st.end(); @@ -1162,7 +1268,7 @@ test('qs strictDepth option - non-throw cases', function (t) { st.doesNotThrow( function () { var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true }); - st.deepEqual(result, { a: { b: { c: 'd' } } }, 'Should parse correctly'); + st.deepEqual(result, { a: { b: { c: 'd' } } }, 'parses correctly'); } ); st.end(); diff --git a/mcp/node_modules/qs/test/stringify.js b/mcp/node_modules/qs/test/stringify.js index 12b1c71..7253144 100644 --- a/mcp/node_modules/qs/test/stringify.js +++ b/mcp/node_modules/qs/test/stringify.js @@ -8,7 +8,8 @@ var SaferBuffer = require('safer-buffer').Buffer; var hasSymbols = require('has-symbols'); var mockProperty = require('mock-property'); var emptyTestCases = require('./empty-keys-cases').emptyTestCases; -var hasBigInt = typeof BigInt === 'function'; +var hasProto = require('has-proto')(); +var hasBigInt = require('has-bigints')(); test('stringify()', function (t) { t.test('stringifies a querystring object', function (st) { @@ -650,10 +651,8 @@ test('stringify()', function (t) { st.end(); }); - t.test('stringifies a null object', { skip: !Object.create }, function (st) { - var obj = Object.create(null); - obj.a = 'b'; - st.equal(qs.stringify(obj), 'a=b'); + t.test('stringifies a null object', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ __proto__: null, a: 'b' }), 'a=b'); st.end(); }); @@ -665,11 +664,8 @@ test('stringify()', function (t) { st.end(); }); - t.test('stringifies an object with a null object as a child', { skip: !Object.create }, function (st) { - var obj = { a: Object.create(null) }; - - obj.a.b = 'c'; - st.equal(qs.stringify(obj), 'a%5Bb%5D=c'); + t.test('stringifies an object with a null object as a child', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ a: { __proto__: null, b: 'c' } }), 'a%5Bb%5D=c'); st.end(); }); @@ -1254,7 +1250,7 @@ test('stringify()', function (t) { }; st.equal( - qs.stringify(obj, { arrayFormat: 'bracket', charset: 'utf-8' }), + qs.stringify(obj, { arrayFormat: 'brackets', charset: 'utf-8' }), 'foo=' + expected.join('') ); @@ -1295,4 +1291,16 @@ test('stringifies empty keys', function (t) { st.end(); }); + + t.test('stringifies non-string keys', function (st) { + var actual = qs.stringify({ a: 'b', 'false': {} }, { + filter: ['a', false, null], + allowDots: true, + encodeDotInKeys: true + }); + + st.equal(actual, 'a=b', 'stringifies correctly'); + + st.end(); + }); }); diff --git a/mcp/node_modules/qs/test/utils.js b/mcp/node_modules/qs/test/utils.js index aa84dfd..3933516 100644 --- a/mcp/node_modules/qs/test/utils.js +++ b/mcp/node_modules/qs/test/utils.js @@ -4,6 +4,8 @@ var test = require('tape'); var inspect = require('object-inspect'); var SaferBuffer = require('safer-buffer').Buffer; var forEach = require('for-each'); +var v = require('es-value-fixtures'); + var utils = require('../lib/utils'); test('merge()', function (t) { @@ -28,6 +30,20 @@ test('merge()', function (t) { var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar'); t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true }); + var func = function f() {}; + t.deepEqual( + utils.merge(func, { foo: 'bar' }), + [func, { foo: 'bar' }], + 'functions can not be merged into' + ); + + func.bar = 'baz'; + t.deepEqual( + utils.merge({ foo: 'bar' }, func), + { foo: 'bar', bar: 'baz' }, + 'functions can be merge sources' + ); + t.test( 'avoids invoking array setters unnecessarily', { skip: typeof Object.defineProperty !== 'function' }, @@ -119,6 +135,104 @@ test('combine()', function (t) { t.end(); }); +test('decode', function (t) { + t.equal( + utils.decode('a+b'), + 'a b', + 'decodes + to space' + ); + + t.equal( + utils.decode('name%2Eobj'), + 'name.obj', + 'decodes a string' + ); + t.equal( + utils.decode('name%2Eobj%2Efoo', null, 'iso-8859-1'), + 'name.obj.foo', + 'decodes a string in iso-8859-1' + ); + + t.end(); +}); + +test('encode', function (t) { + forEach(v.nullPrimitives, function (nullish) { + t['throws']( + function () { utils.encode(nullish); }, + TypeError, + inspect(nullish) + ' is not a string' + ); + }); + + t.equal(utils.encode(''), '', 'empty string returns itself'); + t.deepEqual(utils.encode([]), [], 'empty array returns itself'); + t.deepEqual(utils.encode({ length: 0 }), { length: 0 }, 'empty arraylike returns itself'); + + t.test('symbols', { skip: !v.hasSymbols }, function (st) { + st.equal(utils.encode(Symbol('x')), 'Symbol%28x%29', 'symbol is encoded'); + + st.end(); + }); + + t.equal( + utils.encode('(abc)'), + '%28abc%29', + 'encodes parentheses' + ); + t.equal( + utils.encode({ toString: function () { return '(abc)'; } }), + '%28abc%29', + 'toStrings and encodes parentheses' + ); + + t.equal( + utils.encode('abc 123 đŸ’©', null, 'iso-8859-1'), + 'abc%20123%20%26%2355357%3B%26%2356489%3B', + 'encodes in iso-8859-1' + ); + + var longString = ''; + var expectedString = ''; + for (var i = 0; i < 1500; i++) { + longString += ' '; + expectedString += '%20'; + } + + t.equal( + utils.encode(longString), + expectedString, + 'encodes a long string' + ); + + t.equal( + utils.encode('\x28\x29'), + '%28%29', + 'encodes parens normally' + ); + t.equal( + utils.encode('\x28\x29', null, null, null, 'RFC1738'), + '()', + 'does not encode parens in RFC1738' + ); + + // todo RFC1738 format + + t.equal( + utils.encode('Āက'), + '%C4%80%E1%80%80%EF%A4%80', + 'encodes multibyte chars' + ); + + t.equal( + utils.encode('\uD83D \uDCA9'), + '%F0%9F%90%A0%F0%BA%90%80', + 'encodes lone surrogates' + ); + + t.end(); +}); + test('isBuffer()', function (t) { forEach([null, undefined, true, false, '', 'abc', 42, 0, NaN, {}, [], function () {}, /a/g], function (x) { t.equal(utils.isBuffer(x), false, inspect(x) + ' is not a buffer'); @@ -134,3 +248,15 @@ test('isBuffer()', function (t) { t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer'); t.end(); }); + +test('isRegExp()', function (t) { + t.equal(utils.isRegExp(/a/g), true, 'RegExp is a RegExp'); + t.equal(utils.isRegExp(new RegExp('a', 'g')), true, 'new RegExp is a RegExp'); + t.equal(utils.isRegExp(new Date()), false, 'Date is not a RegExp'); + + forEach(v.primitives, function (primitive) { + t.equal(utils.isRegExp(primitive), false, inspect(primitive) + ' is not a RegExp'); + }); + + t.end(); +}); diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.github/dependabot.yml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.github/dependabot.yml deleted file mode 100644 index e4a0e0a..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - allow: - - dependency-type: production diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/Project.xml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/Project.xml deleted file mode 100644 index 3f2688c..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/iconv-lite.iml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/iconv-lite.iml deleted file mode 100644 index 0c8867d..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/iconv-lite.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 03d9549..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/modules.xml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/modules.xml deleted file mode 100644 index 5d24f2e..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/vcs.xml b/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/Changelog.md b/mcp/node_modules/raw-body/node_modules/iconv-lite/Changelog.md deleted file mode 100644 index 464549b..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/Changelog.md +++ /dev/null @@ -1,212 +0,0 @@ -## 0.6.3 / 2021-05-23 - * Fix HKSCS encoding to prefer Big5 codes if both Big5 and HKSCS codes are possible (#264) - - -## 0.6.2 / 2020-07-08 - * Support Uint8Array-s decoding without conversion to Buffers, plus fix an edge case. - - -## 0.6.1 / 2020-06-28 - * Support Uint8Array-s directly when decoding (#246, by @gyzerok) - * Unify package.json version ranges to be strictly semver-compatible (#241) - * Fix minor issue in UTF-32 decoder's endianness detection code. - - -## 0.6.0 / 2020-06-08 - * Updated 'gb18030' encoding to :2005 edition (see https://github.com/whatwg/encoding/issues/22). - * Removed `iconv.extendNodeEncodings()` mechanism. It was deprecated 5 years ago and didn't work - in recent Node versions. - * Reworked Streaming API behavior in browser environments to fix #204. Streaming API will be - excluded by default in browser packs, saving ~100Kb bundle size, unless enabled explicitly using - `iconv.enableStreamingAPI(require('stream'))`. - * Updates to development environment & tests: - * Added ./test/webpack private package to test complex new use cases that need custom environment. - It's tested as a separate job in Travis CI. - * Updated generation code for the new EUC-KR index file format from Encoding Standard. - * Removed Buffer() constructor in tests (#197 by @gabrielschulhof). - - -## 0.5.2 / 2020-06-08 - * Added `iconv.getEncoder()` and `iconv.getDecoder()` methods to typescript definitions (#229). - * Fixed semver version to 6.1.2 to support Node 8.x (by @tanandara). - * Capped iconv version to 2.x as 3.x has dropped support for older Node versions. - * Switched from instanbul to c8 for code coverage. - - -## 0.5.1 / 2020-01-18 - - * Added cp720 encoding (#221, by @kr-deps) - * (minor) Changed Changelog.md formatting to use h2. - - -## 0.5.0 / 2019-06-26 - - * Added UTF-32 encoding, both little-endian and big-endian variants (UTF-32LE, UTF32-BE). If endianness - is not provided for decoding, it's deduced automatically from the stream using a heuristic similar to - what we use in UTF-16. (great work in #216 by @kshetline) - * Several minor updates to README (#217 by @oldj, plus some more) - * Added Node versions 10 and 12 to Travis test harness. - - -## 0.4.24 / 2018-08-22 - - * Added MIK encoding (#196, by @Ivan-Kalatchev) - - -## 0.4.23 / 2018-05-07 - - * Fix deprecation warning in Node v10 due to the last usage of `new Buffer` (#185, by @felixbuenemann) - * Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn) - - -## 0.4.22 / 2018-05-05 - - * Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson) - * Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson) - - -## 0.4.21 / 2018-04-06 - - * Fix encoding canonicalization (#156) - * Fix the paths in the "browser" field in package.json (#174 by @LMLB) - * Removed "contributors" section in package.json - see Git history instead. - - -## 0.4.20 / 2018-04-06 - - * Updated `new Buffer()` usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR) - - -## 0.4.19 / 2017-09-09 - - * Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147) - * Re-generated windows1255 codec, because it was updated in iconv project - * Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8 - - -## 0.4.18 / 2017-06-13 - - * Fixed CESU-8 regression in Node v8. - - -## 0.4.17 / 2017-04-22 - - * Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn) - - -## 0.4.16 / 2017-04-22 - - * Added support for React Native (#150) - * Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex) - * Fixed typo in Readme (#138 by @jiangzhuo) - * Fixed build for Node v6.10+ by making correct version comparison - * Added a warning if iconv-lite is loaded not as utf-8 (see #142) - - -## 0.4.15 / 2016-11-21 - - * Fixed typescript type definition (#137) - - -## 0.4.14 / 2016-11-20 - - * Preparation for v1.0 - * Added Node v6 and latest Node versions to Travis CI test rig - * Deprecated Node v0.8 support - * Typescript typings (@larssn) - * Fix encoding of Euro character in GB 18030 (inspired by @lygstate) - * Add ms prefix to dbcs windows encodings (@rokoroku) - - -## 0.4.13 / 2015-10-01 - - * Fix silly mistake in deprecation notice. - - -## 0.4.12 / 2015-09-26 - - * Node v4 support: - * Added CESU-8 decoding (#106) - * Added deprecation notice for `extendNodeEncodings` - * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) - - -## 0.4.11 / 2015-07-03 - - * Added CESU-8 encoding. - - -## 0.4.10 / 2015-05-26 - - * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not - just spaces. This should minimize the importance of "default" endianness. - - -## 0.4.9 / 2015-05-24 - - * Streamlined BOM handling: strip BOM by default, add BOM when encoding if - addBOM: true. Added docs to Readme. - * UTF16 now uses UTF16-LE by default. - * Fixed minor issue with big5 encoding. - * Added io.js testing on Travis; updated node-iconv version to test against. - Now we just skip testing SBCS encodings that node-iconv doesn't support. - * (internal refactoring) Updated codec interface to use classes. - * Use strict mode in all files. - - -## 0.4.8 / 2015-04-14 - - * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) - - -## 0.4.7 / 2015-02-05 - - * stop official support of Node.js v0.8. Should still work, but no guarantees. - reason: Packages needed for testing are hard to get on Travis CI. - * work in environment where Object.prototype is monkey patched with enumerable - props (#89). - - -## 0.4.6 / 2015-01-12 - - * fix rare aliases of single-byte encodings (thanks @mscdex) - * double the timeout for dbcs tests to make them less flaky on travis - - -## 0.4.5 / 2014-11-20 - - * fix windows-31j and x-sjis encoding support (@nleush) - * minor fix: undefined variable reference when internal error happens - - -## 0.4.4 / 2014-07-16 - - * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) - * fixed streaming base64 encoding - - -## 0.4.3 / 2014-06-14 - - * added encodings UTF-16BE and UTF-16 with BOM - - -## 0.4.2 / 2014-06-12 - - * don't throw exception if `extendNodeEncodings()` is called more than once - - -## 0.4.1 / 2014-06-11 - - * codepage 808 added - - -## 0.4.0 / 2014-06-10 - - * code is rewritten from scratch - * all widespread encodings are supported - * streaming interface added - * browserify compatibility added - * (optional) extend core primitive encodings to make usage even simpler - * moved from vows to mocha as the testing framework - - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/LICENSE b/mcp/node_modules/raw-body/node_modules/iconv-lite/LICENSE deleted file mode 100644 index d518d83..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011 Alexander Shtuchkin - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/README.md b/mcp/node_modules/raw-body/node_modules/iconv-lite/README.md deleted file mode 100644 index 3c97f87..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/README.md +++ /dev/null @@ -1,130 +0,0 @@ -## iconv-lite: Pure JS character encoding conversion - - * No need for native code compilation. Quick to install, works on Windows and in sandboxed environments like [Cloud9](http://c9.io). - * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), - [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. - * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). - * Intuitive encode/decode API, including Streaming support. - * In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). - * Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. - * React Native is supported (need to install `stream` module to enable Streaming API). - * License: MIT. - -[![NPM Stats](https://nodei.co/npm/iconv-lite.png)](https://npmjs.org/package/iconv-lite/) -[![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) -[![npm](https://img.shields.io/npm/v/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm downloads](https://img.shields.io/npm/dm/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) -[![npm bundle size](https://img.shields.io/bundlephobia/min/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) - -## Usage -### Basic API -```javascript -var iconv = require('iconv-lite'); - -// Convert from an encoded buffer to a js string. -str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); - -// Convert from a js string to an encoded buffer. -buf = iconv.encode("Sample input string", 'win1251'); - -// Check if encoding is supported -iconv.encodingExists("us-ascii") -``` - -### Streaming API -```javascript - -// Decode stream (from binary data stream to js strings) -http.createServer(function(req, res) { - var converterStream = iconv.decodeStream('win1251'); - req.pipe(converterStream); - - converterStream.on('data', function(str) { - console.log(str); // Do something with decoded strings, chunk-by-chunk. - }); -}); - -// Convert encoding streaming example -fs.createReadStream('file-in-win1251.txt') - .pipe(iconv.decodeStream('win1251')) - .pipe(iconv.encodeStream('ucs2')) - .pipe(fs.createWriteStream('file-in-ucs2.txt')); - -// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. -http.createServer(function(req, res) { - req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { - assert(typeof body == 'string'); - console.log(body); // full request body string - }); -}); -``` - -## Supported encodings - - * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. - * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, - IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. - Aliases like 'latin1', 'us-ascii' also supported. - * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. - -See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). - -Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! - -Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! - - -## Encoding/decoding speed - -Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). -Note: your results may vary, so please always check on your hardware. - - operation iconv@2.1.4 iconv-lite@0.4.7 - ---------------------------------------------------------- - encode('win1251') ~96 Mb/s ~320 Mb/s - decode('win1251') ~95 Mb/s ~246 Mb/s - -## BOM handling - - * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options - (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). - A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. - * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. - * Encoding: No BOM added, unless overridden by `addBOM: true` option. - -## UTF-16 Encodings - -This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be -smart about endianness in the following ways: - * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be - overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. - -## UTF-32 Encodings - -This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. - * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) - -## Other notes - -When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). -Untranslatable characters are set to ïżœ or ?. No transliteration is currently supported. -Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77). - -## Testing - -```bash -$ git clone git@github.com:ashtuchkin/iconv-lite.git -$ cd iconv-lite -$ npm install -$ npm test - -$ # To view performance: -$ node test/performance.js - -$ # To view test coverage: -$ npm run coverage -$ open coverage/lcov-report/index.html -``` diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js deleted file mode 100644 index fa83917..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js +++ /dev/null @@ -1,597 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec; - -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; - -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; - - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); - - // Load tables. - var mappingTable = codecOptions.table(); - - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 common decode nodes. - var commonThirdByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - var commonFourthByteNodeIdx = this.decodeTables.length; - this.decodeTables.push(UNASSIGNED_NODE.slice(0)); - - // Fill out the tree - var firstByteNode = this.decodeTables[0]; - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; - for (var j = 0x30; j <= 0x39; j++) { - if (secondByteNode[j] === UNASSIGNED) { - secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; - } else if (secondByteNode[j] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 2"); - } - - var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; - for (var k = 0x81; k <= 0xFE; k++) { - if (thirdByteNode[k] === UNASSIGNED) { - thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; - } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { - continue; - } else if (thirdByteNode[k] > NODE_START) { - throw new Error("gb18030 decode tables conflict at byte 3"); - } - - var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; - for (var l = 0x30; l <= 0x39; l++) { - if (fourthByteNode[l] === UNASSIGNED) - fourthByteNode[l] = GB18030_CODE; - } - } - } - } - } - - this.defaultCharUnicode = iconv.defaultCharUnicode; - - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); -} - -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); - - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} - - -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); - } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; - } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); - } - - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } - } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; -} - -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - var hasValues = false; - var subNodeEmpty = {}; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; - - if (uCode >= 0) { - this._setEncodeChar(uCode, mbCode); - hasValues = true; - } else if (uCode <= NODE_START) { - var subNodeIdx = NODE_START - uCode; - if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). - var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. - if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) - hasValues = true; - else - subNodeEmpty[subNodeIdx] = true; - } - } else if (uCode <= SEQ_START) { - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); - hasValues = true; - } - } - return hasValues; -} - - - -// == Encoder ================================================================== - -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; -} - -DBCSEncoder.prototype.write = function(str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } - - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; - - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; - - } else if (resCode == undefined) { // Current character is not part of the sequence. - - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. - - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } - - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } - - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else if (dbcsCode < 0x1000000) { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } else { - newBuf[j++] = dbcsCode >>> 24; - newBuf[j++] = (dbcsCode >>> 16) & 0xFF; - newBuf[j++] = (dbcsCode >>> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } - - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); -} - -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. - - var newBuf = Buffer.alloc(10), j = 0; - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; - } - - return newBuf.slice(0, j); -} - -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; - - -// == Decoder ================================================================== - -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBytes = []; - - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; -} - -DBCSDecoder.prototype.write = function(buf) { - var newBuf = Buffer.alloc(buf.length*2), - nodeIdx = this.nodeIdx, - prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, - seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. - uCode; - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; - - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - uCode = this.defaultCharUnicode.charCodeAt(0); - i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. - } - else if (uCode === GB18030_CODE) { - if (i >= 3) { - var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); - } else { - var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + - (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + - (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + - (curByte-0x30); - } - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode >= 0x10000) { - uCode -= 0x10000; - var uCodeLead = 0xD800 | (uCode >> 10); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; - - uCode = 0xDC00 | (uCode & 0x3FF); - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - - // Reset trie node. - nodeIdx = 0; seqStart = i+1; - } - - this.nodeIdx = nodeIdx; - this.prevBytes = (seqStart >= 0) - ? Array.prototype.slice.call(buf, seqStart) - : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); - - return newBuf.slice(0, j).toString('ucs2'); -} - -DBCSDecoder.prototype.end = function() { - var ret = ''; - - // Try to parse all remaining chars. - while (this.prevBytes.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var bytesArr = this.prevBytes.slice(1); - - // Parse remaining as usual. - this.prevBytes = []; - this.nodeIdx = 0; - if (bytesArr.length > 0) - ret += this.write(bytesArr); - } - - this.prevBytes = []; - this.nodeIdx = 0; - return ret; -} - -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; - - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + ((r-l+1) >> 1); - if (table[mid] <= val) - l = mid; - else - r = mid; - } - return l; -} - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js deleted file mode 100644 index 0d17e58..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js +++ /dev/null @@ -1,188 +0,0 @@ -"use strict"; - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + „ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'ms31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - 'ms932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', - - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - - - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', - - // Microsoft's CP936 is a subset and approximation of GBK. - 'windows936': 'cp936', - 'ms936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, - - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - 'isoir58': 'gbk', - - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - encodeSkipVals: [0x80], - encodeAdd: {'€': 0xA2E3}, - }, - - 'chinese': 'gb18030', - - - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - 'ms949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, - - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', - - - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - - 'windows950': 'cp950', - 'ms950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, - - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [ - // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of - // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. - 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, - 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, - 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, - 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, - 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, - - // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, - ], - }, - - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', -}; diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/index.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/index.js deleted file mode 100644 index d95c244..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/index.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf32"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; - -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js deleted file mode 100644 index dc1074f..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js +++ /dev/null @@ -1,198 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Export Node.js internal encodings. - -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", - - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", - - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, - - // Codec. - _internal: InternalCodec, -}; - -//------------------------------------------------------------------------------ - -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; - - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; - - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== 'đŸ’©') { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; - } - } -} - -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; - -//------------------------------------------------------------------------------ - -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; - -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; - - -function InternalDecoder(options, codec) { - this.decoder = new StringDecoder(codec.enc); -} - -InternalDecoder.prototype.write = function(buf) { - if (!Buffer.isBuffer(buf)) { - buf = Buffer.from(buf); - } - - return this.decoder.write(buf); -} - -InternalDecoder.prototype.end = function() { - return this.decoder.end(); -} - - -//------------------------------------------------------------------------------ -// Encoder is mostly trivial - -function InternalEncoder(options, codec) { - this.enc = codec.enc; -} - -InternalEncoder.prototype.write = function(str) { - return Buffer.from(str, this.enc); -} - -InternalEncoder.prototype.end = function() { -} - - -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. - -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; -} - -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); - - return Buffer.from(str, "base64"); -} - -InternalEncoderBase64.prototype.end = function() { - return Buffer.from(this.prevStr, "base64"); -} - - -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. - -function InternalEncoderCesu8(options, codec) { -} - -InternalEncoderCesu8.prototype.write = function(str) { - var buf = Buffer.alloc(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - } - return buf.slice(0, bufIdx); -} - -InternalEncoderCesu8.prototype.end = function() { -} - -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ - -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; -} - -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } - - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; - } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} - -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js deleted file mode 100644 index abac5ff..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). - -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; - } - - this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); - - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; - - this.encodeBuf = encodeBuf; -} - -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; - - -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} - -SBCSEncoder.prototype.write = function(str) { - var buf = Buffer.alloc(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} - -SBCSEncoder.prototype.end = function() { -} - - -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} - -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = Buffer.alloc(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; - } - return newBuf.toString('ucs2'); -} - -SBCSDecoder.prototype.end = function() { -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js deleted file mode 100644 index 9b48236..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js +++ /dev/null @@ -1,451 +0,0 @@ -"use strict"; - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "â‚Źïżœïżœïżœïżœâ€Šïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœïżœïżœïżœïżœïżœïżœïżœÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šïżœâ€žâ€Šâ€ â€Ąïżœâ€°Ć â€čĆšĆ€ĆœĆčïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąĆĄâ€șĆ›Ć„ĆŸĆșÂ Ë‡Ë˜ĆÂ€Ä„ÂŠÂ§ÂšÂ©ĆžÂ«ÂŹÂ­ÂźĆ»Â°Â±Ë›Ć‚ÂŽÂ”Â¶Â·ÂžÄ…ĆŸÂ»ÄœËÄŸĆŒĆ”ĂĂ‚Ä‚Ă„ÄčÄ†Ă‡ÄŒĂ‰Ä˜Ă‹ÄšĂĂŽÄŽÄĆƒĆ‡Ă“Ă”ĆĂ–Ă—Ć˜ĆźĂšĆ°ĂœĂĆąĂŸĆ•ĂĄĂąÄƒĂ€ÄșÄ‡Ă§ÄĂ©Ä™Ă«Ä›Ă­ĂźÄÄ‘Ć„ĆˆĂłĂŽĆ‘Ă¶Ă·Ć™ĆŻĂșĆ±ĂŒĂœĆŁË™" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„
†‡€‰Љâ€čĐŠĐŒĐ‹ĐŃ’â€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąŃ™â€șŃšŃœŃ›ŃŸÂ ĐŽŃžĐˆÂ€ÒÂŠÂ§ĐÂ©Đ„Â«ÂŹÂ­ÂźĐ‡Â°Â±Đ†Ń–Ò‘Â”Â¶Â·Ń‘â„–Ń”Â»Ń˜Đ…Ń•Ń—ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čĆ’ïżœĆœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąĆĄâ€șĆ“ïżœĆŸĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€Ąïżœâ€°ïżœâ€čïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœïżœïżœïżœÂ Î…Î†ÂŁÂ€Â„ÂŠÂ§ÂšÂ©ïżœÂ«ÂŹÂ­Âźâ€•Â°Â±ÂČÂłÎ„Â”Â¶Â·ÎˆÎ‰ÎŠÂ»ÎŒÂœÎŽÎÎÎ‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄïżœÎŁÎ€Î„ÎŠÎ§ÎšÎ©ÎȘΫΏέΟίΰαÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏÏŽïżœ" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čĆ’ïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąĆĄâ€șĆ“ïżœïżœĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄžĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÄ°ĆžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻÄŸĂ±ĂČóÎÔö÷ÞĂčĂșĂ»ĂŒÄ±ĆŸĂż" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°ïżœâ€čïżœïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąïżœâ€șïżœïżœïżœïżœÂ ÂĄÂąÂŁâ‚Ș„Чš©×«­Ÿ¯°±Âȳޔ¶·žÂčĂ·Â»ÂŒÂœÂŸÂżÖ°Ö±ÖČÖłÖŽÖ”Ö¶Ö·ÖžÖčÖșÖ»ÖŒÖœÖŸÖżŚ€ŚŚ‚ŚƒŚ°Ś±ŚČŚłŚŽïżœïżœïżœïżœïżœïżœïżœŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœïżœâ€Žâ€ïżœ" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "â‚ŹÙŸâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ùčâ€čĆ’Ú†Ú˜ÚˆÚŻâ€˜â€™â€œâ€â€ąâ€“â€”Ú©â„ąÚ‘â€șƓ‌‍ÚșÂ ŰŒÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÚŸÂ«ÂŹÂ­ÂźÂŻÂ°Â±Âȳޔ¶·žÂčŰ›Â»ÂŒÂœÂŸŰŸÛŰĄŰąŰŁŰ€Ű„ŰŠŰ§ŰšŰ©ŰȘ۫ۏۭ۟ۯ۰۱ŰČ۳ێ۔۶×۷۞ŰčŰșÙ€ÙÙ‚ÙƒĂ Ù„ĂąÙ…Ù†Ù‡ÙˆĂ§ĂšĂ©ĂȘĂ«Ù‰ÙŠĂźĂŻÙ‹ÙŒÙÙŽĂŽÙÙĂ·Ù‘ĂčÙ’Ă»ĂŒâ€Žâ€Û’" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šïżœâ€žâ€Šâ€ â€Ąïżœâ€°ïżœâ€čïżœÂšË‡Âžïżœâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœÂŻË›ïżœÂ ïżœÂąÂŁÂ€ïżœÂŠÂ§Ă˜Â©Ć–Â«ÂŹÂ­ÂźĂ†Â°Â±Âȳޔ¶·ÞÂčĆ—Â»ÂŒÂœÂŸĂŠÄ„ÄźÄ€Ä†Ă„Ă…Ä˜Ä’ÄŒĂ‰ĆčĖĹĶÄȘÄ»Ć ĆƒĆ…Ă“ĆŒĂ•Ă–Ă—ĆČÁÚĆȘĂœĆ»ĆœĂŸÄ…ÄŻÄÄ‡Ă€Ă„Ä™Ä“ÄĂ©ĆșÄ—ÄŁÄ·Ä«ÄŒĆĄĆ„Ć†ĂłĆĂ”Ă¶Ă·ĆłĆ‚Ć›Ć«ĂŒĆŒĆŸË™" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "â‚Źïżœâ€šÆ’â€žâ€Šâ€ â€ĄË†â€°ïżœâ€čĆ’ïżœïżœïżœïżœâ€˜â€™â€œâ€â€ąâ€“â€”Ëœâ„ąïżœâ€șĆ“ïżœïżœĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„Ë˜ĆÂ€ÄœĆšÂ§ÂšĆ ĆžĆ€ĆčÂ­ĆœĆ»Â°Ä…Ë›Ć‚ÂŽÄŸĆ›Ë‡ÂžĆĄĆŸĆ„ĆșËĆŸĆŒĆ”ĂĂ‚Ä‚Ă„ÄčÄ†Ă‡ÄŒĂ‰Ä˜Ă‹ÄšĂĂŽÄŽÄĆƒĆ‡Ă“Ă”ĆĂ–Ă—Ć˜ĆźĂšĆ°ĂœĂĆąĂŸĆ•ĂĄĂąÄƒĂ€ÄșÄ‡Ă§ÄĂ©Ä™Ă«Ä›Ă­ĂźÄÄ‘Ć„ĆˆĂłĂŽĆ‘Ă¶Ă·Ć™ĆŻĂșĆ±ĂŒĂœĆŁË™" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÄŠË˜ÂŁÂ€ïżœÄ€Â§ÂšÄ°ĆžÄžÄŽÂ­ïżœĆ»Â°Ä§ÂČÂłÂŽÂ”Ä„Â·ÂžÄ±ĆŸÄŸÄ”ÂœïżœĆŒĂ€ĂĂ‚ïżœĂ„ÄŠÄˆĂ‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂïżœĂ‘Ă’Ă“Ă”Ä Ă–Ă—ÄœĂ™ĂšĂ›ĂœĆŹĆœĂŸĂ ĂĄĂąïżœĂ€Ä‹Ä‰Ă§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻïżœĂ±ĂČĂłĂŽÄĄĂ¶Ă·ÄĂčĂșĂ»ĂŒĆ­ĆË™" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„ÄžĆ–Â€ÄšÄ»Â§ÂšĆ Ä’ÄąĆŠÂ­ĆœÂŻÂ°Ä…Ë›Ć—ÂŽÄ©ÄŒË‡ÂžĆĄÄ“ÄŁĆ§ĆŠĆŸĆ‹Ä€ĂĂ‚ĂƒĂ„Ă…Ă†ÄźÄŒĂ‰Ä˜Ă‹Ä–ĂĂŽÄȘÄĆ…ĆŒÄ¶Ă”Ă•Ă–Ă—Ă˜ĆČÚÛÜƹĆȘĂŸÄĂĄĂąĂŁĂ€Ă„ĂŠÄŻÄĂ©Ä™Ă«Ä—Ă­ĂźÄ«Ä‘Ć†ĆÄ·ĂŽĂ”Ă¶Ă·ĂžĆłĂșĂ»ĂŒĆ©Ć«Ë™" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ĐĐ‚ĐƒĐ„Đ…Đ†Đ‡ĐˆĐ‰ĐŠĐ‹ĐŒÂ­ĐŽĐĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ„–Ń‘Ń’Ń“Ń”Ń•Ń–Ń—Ń˜Ń™ŃšŃ›ŃœÂ§ŃžŃŸ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœïżœïżœÂ€ïżœïżœïżœïżœïżœïżœïżœŰŒÂ­ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœŰ›ïżœïżœïżœŰŸïżœŰĄŰąŰŁŰ€Ű„ŰŠŰ§ŰšŰ©ŰȘ۫ۏۭ۟ۯ۰۱ŰČ۳ێ۔۶۷۞ŰčŰșïżœïżœïżœïżœïżœÙ€ÙÙ‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠÙ‹ÙŒÙÙŽÙÙÙ‘Ù’ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ â€˜â€™ÂŁâ‚Źâ‚ŻÂŠÂ§ÂšÂ©ÍșÂ«ÂŹÂ­ïżœâ€•Â°Â±ÂČÂłÎ„Î…Î†Â·ÎˆÎ‰ÎŠÂ»ÎŒÂœÎŽÎÎÎ‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄïżœÎŁÎ€Î„ÎŠÎ§ÎšÎ©ÎȘΫΏέΟίΰαÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏÏŽïżœ" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©Ă—Â«ÂŹÂ­ÂźÂŻÂ°Â±Âȳޔ¶·žÂčĂ·Â»ÂŒÂœÂŸïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœâ€—ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœïżœâ€Žâ€ïżœ" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄžĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÄ°ĆžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ĂŹĂ­ĂźĂŻÄŸĂ±ĂČóÎÔö÷ÞĂčĂșĂ»ĂŒÄ±ĆŸĂż" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒıÄȘÄšÄ¶Â§Ä»ÄĆ ĆŠĆœÂ­ĆȘĆŠÂ°Ä…Ä“ÄŁÄ«Ä©Ä·Â·ÄŒÄ‘ĆĄĆ§ĆŸâ€•Ć«Ć‹Ä€ĂĂ‚ĂƒĂ„Ă…Ă†ÄźÄŒĂ‰Ä˜Ă‹Ä–ĂĂŽĂĂĆ…ĆŒĂ“Ă”Ă•Ă–ĆšĂ˜ĆČĂšĂ›ĂœĂĂžĂŸÄĂĄĂąĂŁĂ€Ă„ĂŠÄŻÄĂ©Ä™Ă«Ä—Ă­ĂźĂŻĂ°Ć†ĆĂłĂŽĂ”Ă¶Ć©ĂžĆłĂșĂ»ĂŒĂœĂŸÄž" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ â€ÂąÂŁÂ€â€žÂŠÂ§Ă˜Â©Ć–Â«ÂŹÂ­ÂźĂ†Â°Â±ÂČÂłâ€œÂ”Â¶Â·ĂžÂčĆ—Â»ÂŒÂœÂŸĂŠÄ„ÄźÄ€Ä†Ă„Ă…Ä˜Ä’ÄŒĂ‰ĆčĖĹĶÄȘÄ»Ć ĆƒĆ…Ă“ĆŒĂ•Ă–Ă—ĆČÁÚĆȘĂœĆ»ĆœĂŸÄ…ÄŻÄÄ‡Ă€Ă„Ä™Ä“ÄĂ©ĆșÄ—ÄŁÄ·Ä«ÄŒĆĄĆ„Ć†ĂłĆĂ”Ă¶Ă·ĆłĆ‚Ć›Ć«ĂŒĆŒĆŸâ€™" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ᾂᾃ£Ċċᾊ§áș€Â©áș‚áž‹á»Č­¼ƾᾞᾟĠġáč€áčÂ¶áč–áșáč—áșƒáč á»łáș„áș…áčĄĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĆŽĂ‘Ă’Ă“Ă”Ă•Ă–áčȘĂ˜Ă™ĂšĂ›ĂœĂĆ¶ĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïƔñĂČóÎÔöáč«ĂžĂčĂșĂ»ĂŒĂœĆ·Ăż" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁâ‚ŹÂ„Ć Â§ĆĄÂ©ÂȘ«­Ÿ¯°±ÂČÂłĆœÂ”Â¶Â·ĆŸÂčÂșÂ»Ć’Ć“ĆžÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĂĂ‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĂžĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ä„Ä…Ćâ‚Źâ€žĆ Â§ĆĄÂ©È˜Â«Ćč­ĆșĆ»Â°Â±ÄŒĆ‚Ćœâ€Â¶Â·ĆŸÄÈ™Â»Ć’Ć“ĆžĆŒĂ€ĂĂ‚Ä‚Ă„Ä†Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂÄĆƒĂ’Ă“Ă”ĆĂ–ĆšĆ°Ă™ĂšĂ›ĂœÄ˜ÈšĂŸĂ ĂĄĂąÄƒĂ€Ä‡ĂŠĂ§ĂšĂ©ĂȘëÏíßïđƄĂČóÎƑöƛƱĂčĂșĂ»ĂŒÄ™È›Ăż" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœÂąÂŁÂ„â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎÎžÎŸÎ ÎĄÎŁÎ€Î„ÎŠÎ§ÎšÎ©Î±ÎČγΎΔζηΞÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏƒÏ‚Ï„Ï…Ï†Ï‡Ïˆâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ï‰ÎŹÎ­ÎźÏŠÎŻÏŒÏÏ‹ÏŽÎ†ÎˆÎ‰ÎŠÎŒÎŽÎÂ±â‰„â‰€ÎȘÎ«Ă·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "Ä†ĂŒĂ©ÄĂ€ÄŁĂ„Ä‡Ć‚Ä“Ć–Ć—Ä«ĆčĂ„Ă…Ă‰ĂŠĂ†ĆĂ¶ÄąÂąĆšĆ›Ă–ĂœĂžÂŁĂ˜Ă—Â€Ä€ÄȘĂłĆ»ĆŒĆșâ€ÂŠÂ©ÂźÂŹÂœÂŒĆÂ«Â»â–‘â–’â–“â”‚â”€Ä„ÄŒÄ˜Ä–â•Łâ•‘â•—â•ÄźĆ â”â””â”Žâ”Źâ”œâ”€â”ŒĆČĆȘâ•šâ•”â•©â•Šâ• â•â•ŹĆœÄ…ÄÄ™Ä—ÄŻĆĄĆłĆ«ĆŸâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ă“ĂŸĆŒĆƒĂ”Ă•Â”Ć„Ä¶Ä·Ä»ÄŒĆ†Ä’Ć…â€™Â­Â±â€œÂŸÂ¶Â§Ă·â€žÂ°âˆ™Â·ÂčÂłÂČ■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜Ă—Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ă°ĂĂŠĂ‹ĂˆÄ±ĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ĂŸĂžĂšĂ›Ă™ĂœĂÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€ĆŻÄ‡Ă§Ć‚Ă«ĆĆ‘ĂźĆčÄĆÉÄčÄșĂŽĂ¶ÄœÄŸĆšĆ›Ă–ĂœĆ€Ć„ĆĂ—ÄĂĄĂ­ĂłĂșÄ„Ä…ĆœĆŸÄ˜Ä™ÂŹĆșÄŒĆŸÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚ÄšĆžâ•Łâ•‘â•—â•Ć»ĆŒâ”â””â”Žâ”Źâ”œâ”€â”ŒÄ‚Äƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ä‘ÄÄŽĂ‹ÄĆ‡ĂĂŽÄ›â”˜â”Œâ–ˆâ–„ĆąĆźâ–€Ă“ĂŸĂ”ĆƒĆ„ĆˆĆ ĆĄĆ”ĂšĆ•Ć°ĂœĂĆŁÂŽÂ­ËË›Ë‡Ë˜Â§Ă·ÂžÂ°ÂšË™Ć±Ć˜Ć™â– Â " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюмъĐȘĐ°ĐĐ±Đ‘Ń†ĐŠĐŽĐ”Đ”Đ•Ń„Đ€ĐłĐ“Â«Â»â–‘â–’â–“â”‚â”€Ń…Đ„ĐžĐ˜â•Łâ•‘â•—â•ĐčĐ™â”â””â”Žâ”Źâ”œâ”€â”ŒĐșĐšâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Đ»Đ›ĐŒĐœĐœĐĐŸĐžĐżâ”˜â”Œâ–ˆâ–„ĐŸŃâ–€ĐŻŃ€Đ ŃĐĄŃ‚ĐąŃƒĐŁĐ¶Đ–ĐČĐ’ŃŒĐŹâ„–Â­Ń‹Đ«Đ·Đ—ŃˆĐšŃĐ­Ń‰Đ©Ń‡Đ§Â§â– Â " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘïżœÂŁïżœĂ—ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœÂźÂŹÂœÂŒïżœÂ«Â»â–‘â–’â–“â”‚â”€ïżœïżœïżœÂ©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”Œïżœïżœâ•šâ•”â•©â•Šâ• â•â•ŹÂ€ïżœïżœïżœïżœïżœïżœïżœïżœïżœâ”˜â”Œâ–ˆâ–„ÂŠïżœâ–€ïżœïżœïżœïżœïżœïżœÂ”ïżœïżœïżœïżœïżœïżœïżœÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßıÄÅÉÊÆÎöĂČĂ»ĂčİÖÜþ£ØƞƟáíóĂșĂ±Ă‘ÄžÄŸÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€ÂșÂȘĂŠĂ‹ĂˆïżœĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ïżœĂ—ĂšĂ›Ă™ĂŹĂżÂŻÂŽÂ­Â±ïżœÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜Ă—Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżÂźÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€ĂĂ‚Ă€Â©â•Łâ•‘â•—â•ÂąÂ„â”â””â”Žâ”Źâ”œâ”€â”ŒĂŁĂƒâ•šâ•”â•©â•Šâ• â•â•ŹÂ€Ă°ĂĂŠĂ‹Ăˆâ‚ŹĂĂŽĂâ”˜â”Œâ–ˆâ–„ÂŠĂŒâ–€Ă“ĂŸĂ”Ă’Ă”Ă•Â”ĂŸĂžĂšĂ›Ă™ĂœĂÂŻÂŽÂ­Â±â€—ÂŸÂ¶Â§Ă·ÂžÂ°ÂšÂ·ÂčÂłÂČ■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂŁĂ ĂĂ§ĂȘĂŠĂšĂĂ”ĂŹĂƒĂ‚Ă‰Ă€ĂˆĂŽĂ”ĂČÚĂčÌÕܱ£Ù₧ÓáíóĂșñÑÂȘÂșÂżĂ’ÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘĂ«ĂšĂĂ°ĂžĂ„Ă…Ă‰ĂŠĂ†ĂŽĂ¶ĂŸĂ»ĂĂœĂ–ĂœĂžÂŁĂ˜â‚§Æ’ĂĄĂ­ĂłĂșĂĂĂ“ĂšÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "ŚŚ‘Ś’Ś“Ś”Ś•Ś–Ś—Ś˜Ś™ŚšŚ›ŚœŚŚžŚŸŚ ŚĄŚąŚŁŚ€Ś„ŚŠŚ§ŚšŚ©ŚȘÂąÂŁÂ„â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ‚Ă Â¶Ă§ĂȘĂ«ĂšĂŻĂźâ€—Ă€Â§Ă‰ĂˆĂŠĂŽĂ‹ĂĂ»ĂčÂ€Ă”ĂœÂąÂŁĂ™Ă›Æ’ÂŠÂŽĂłĂșÂšÂžÂłÂŻĂŽâŒÂŹÂœÂŒÂŸÂ«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$ÙȘ&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Â°Â·âˆ™âˆšâ–’â”€â”‚â”Œâ”€â”Źâ”œâ”Žâ”â”Œâ””â”˜ÎČâˆžÏ†Â±ÂœÂŒâ‰ˆÂ«Â»ï»·ï»žïżœïżœï»»ï»ŒïżœÂ Â­ïș‚£€ïș„ïżœïżœïșŽïșïș•ïș™ŰŒïșïșĄïș„Ù ÙĄÙąÙŁÙ€Ù„ÙŠÙ§ÙšÙ©ï»‘Ű›ïș±ïș”ïșč۟±ïș€ïșïșƒïș…ﻊïș‹ïșïș‘ïș“ïș—ïș›ïșŸïșŁïș§ïș©ïș«ïș­ïșŻïșłïș·ïș»ïșżï»ï»…ï»‹ï»ÂŠÂŹĂ·Ă—ï»‰Ù€ï»“ï»—ï»›ï»Ÿï»Łï»§ï»«ï»­ï»Żï»łïșœï»Œï»Žï»ï»ĄïčœÙ‘ï»„ï»©ï»Źï»°ï»Čï»ï»•ï»”ï»¶ï»ï»™ï»±â– ïżœ" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "Ă‡ĂŒĂ©ĂąĂ€Ă Ă„Ă§ĂȘëÚïßÏÄÅÉÊÆÎöĂČĂ»ĂčĂżĂ–ĂœĂžÂŁĂ˜â‚§Æ’ĂĄĂ­ĂłĂșñÑÂȘÂșÂżâŒÂŹÂœÂŒÂĄÂ«Â€â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘Đ„Ń”Đ‡Ń—ĐŽŃžÂ°âˆ™Â·âˆšâ„–Â€â– Â " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœÎ†ïżœÂ·ÂŹÂŠâ€˜â€™Îˆâ€•Î‰ÎŠÎȘÎŒïżœïżœÎŽÎ«Â©ÎÂČÂłÎŹÂŁÎ­ÎźÎŻÏŠÎÏŒÏÎ‘Î’Î“Î”Î•Î–Î—ÂœÎ˜Î™Â«Â»â–‘â–’â–“â”‚â”€ÎšÎ›ÎœÎâ•Łâ•‘â•—â•ÎžÎŸâ”â””â”Žâ”Źâ”œâ”€â”ŒÎ ÎĄâ•šâ•”â•©â•Šâ• â•â•ŹÎŁÎ€Î„ÎŠÎ§ÎšÎ©Î±ÎČÎłâ”˜â”Œâ–ˆâ–„ÎŽÎ”â–€Î¶Î·ÎžÎčÎșÎ»ÎŒÎœÎŸÎżÏ€ÏÏƒÏ‚Ï„Î„Â­Â±Ï…Ï†Ï‡Â§ÏˆÎ…Â°ÂšÏ‰Ï‹Î°ÏŽâ– Â " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘÂ«ÂŹÂ­Âźâ€ŸÂ°Â±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚ĂƒĂ„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹ĂŒĂĂŽĂĆ Ă‘Ă’Ă“Ă”Ă•Ă–Ă—Ă˜Ă™ĂšĂ›ĂœĂĆœĂŸĂ ĂĄĂąĂŁĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘëÏíßïƥñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĆŸĂż" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ïșˆĂ—Ă·ïŁ¶ïŁ”ïŁŽïŁ·ïč±Âˆâ– â”‚─┐┌└┘ïččïč»ïčœïčżïč·ïșŠï»°ï»łï»Čﻎﻏﻐﻶﻞï»șﻌ ïŁșïŁčïŁžÂ€ïŁ»ïș‹ïș‘ïș—ïș›ïșŸïșŁŰŒÂ­ïș§ïșłÙ ÙĄÙąÙŁÙ€Ù„ÙŠÙ§ÙšÙ©ïș·Ű›ïș»ïșżï»ŠŰŸï»‹ŰĄŰąŰŁŰ€Ű„ۊۧۚ۩ŰȘ۫ۏۭ۟ۯ۰۱ŰČŰłŰŽŰ”Ű¶Ű·ï»‡ŰčŰșﻌïș‚ïș„ïșŽï»“Ù€ÙÙ‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠÙ‹ÙŒÙÙŽÙÙÙ‘Ù’ï»—ï»›ï»ŸïŁŒï»”ï»·ï»čï»»ï»Łï»§ï»Źï»©ïżœ" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ĐĐ‚ÒĐ„Đ…Đ†Đ‡ĐˆĐ‰ĐŠĐ‹ĐŒÂ­ĐŽĐĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ„–Ń‘Ń’Ò‘Ń”Ń•Ń–Ń—Ń˜Ń™ŃšŃ›ŃœÂ§ŃžŃŸ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘ÒÒ‘Đ„Ń”Đ†Ń–Đ‡Ń—Â·âˆšâ„–Â€â– Â " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§Ć“Â©ÂȘ«­Ÿ¯°±Âȳƞ”¶·ƒÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ àșàș‚àș„àș‡àșˆàșȘàșŠàșàș”àș•àș–àș—àș™àșšàș›àșœàșàșžàșŸàșĄàșąàșŁàș„àș§àș«àș­àșźïżœïżœïżœàșŻàș°àșČàșłàșŽàș”àș¶àș·àșžàșčàșŒàș±àș»àșœïżœïżœïżœà»€à»à»‚à»ƒà»„à»ˆà»‰à»Šà»‹à»Œà»à»†ïżœà»œà»â‚­ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœà»à»‘à»’à»“à»”à»•à»–à»—à»˜à»™ïżœïżœÂąÂŹÂŠïżœ" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœàčˆàžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșàč‰àčŠàč‹â‚Źàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ÂąÂŹÂŠÂ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "â‚ŹÂÂ‚ÂƒÂ„â€ŠÂ†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂâ€˜â€™â€œâ€â€ąâ€“â€”Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ÂĄÂąÂŁâ‚ŹÂ„ÂŠÂ§Ć“Â©ÂȘ«­Ÿ¯°±Âȳƞ”¶·ƒÂčÂșÂ»ÂŒÂœÂŸÂżĂ€ĂĂ‚Ä‚Ă„Ă…Ă†Ă‡ĂˆĂ‰ĂŠĂ‹Ì€ĂĂŽĂÄĂ‘Ì‰Ă“Ă”Æ Ă–Ă—Ă˜Ă™ĂšĂ›ĂœÆŻÌƒĂŸĂ ĂĄĂąÄƒĂ€Ă„ĂŠĂ§ĂšĂ©ĂȘĂ«ÌĂ­ĂźĂŻÄ‘Ă±ÌŁĂłĂŽÆĄĂ¶Ă·ĂžĂčĂșĂ»ĂŒÆ°â‚«Ăż" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźĆ â„ąÂŽÂšâ‰ ĆœĂ˜âˆžÂ±â‰€â‰„âˆ†Â”âˆ‚âˆ‘âˆĆĄâˆ«ÂȘÂșâ„ŠĆŸĂžÂżÂĄÂŹâˆšÆ’â‰ˆÄ†Â«ÄŒâ€ŠÂ Ă€ĂƒĂ•Ć’Ć“Äâ€”â€œâ€â€˜â€™Ă·â—ŠïżœÂ©â„Â€â€čâ€șĂ†Â»â€“Â·â€šâ€žâ€°Ă‚Ä‡ĂÄĂˆĂĂŽĂĂŒĂ“Ă”Ä‘Ă’ĂšĂ›Ă™Ä±Ë†ËœÂŻÏ€Ă‹ËšÂžĂŠĂŠË‡" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘĐ«ĐŹĐ­ĐźĐŻâ€ Â°ÂąÂŁÂ§â€ąÂ¶Đ†ÂźÂ©â„ąĐ‚Ń’â‰ ĐƒŃ“âˆžÂ±â‰€â‰„Ń–Â”âˆ‚ĐˆĐ„Ń”Đ‡Ń—Đ‰Ń™ĐŠŃšŃ˜Đ…ÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Đ‹Ń›ĐŒŃœŃ•â€“â€”â€œâ€â€˜â€™Ă·â€žĐŽŃžĐŃŸâ„–ĐŃ‘ŃĐ°Đ±ĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽÂ€" - }, - "macgreek": { - "type": "_sbcs", - "chars": "ÄÂčÂČĂ‰ÂłĂ–ĂœÎ…Ă ĂąĂ€Î„ÂšĂ§Ă©ĂšĂȘĂ«ÂŁâ„ąĂźĂŻâ€ąÂœâ€°ĂŽĂ¶ÂŠÂ­ĂčĂ»ĂŒâ€ Î“Î”Î˜Î›ÎžÎ ĂŸÂźÂ©ÎŁÎȘÂ§â‰ Â°Î‡Î‘Â±â‰€â‰„Â„Î’Î•Î–Î—Î™ÎšÎœÎŠÎ«ÎšÎ©ÎŹÎÂŹÎŸÎĄâ‰ˆÎ€Â«Â»â€ŠÂ Î„Î§Î†ÎˆĆ“â€“â€•â€œâ€â€˜â€™Ă·Î‰ÎŠÎŒÎŽÎ­ÎźÎŻÏŒÎÏÎ±ÎČÏˆÎŽÎ”Ï†ÎłÎ·ÎčΟÎșÎ»ÎŒÎœÎżÏ€ÏŽÏÏƒÏ„ÎžÏ‰Ï‚Ï‡Ï…Î¶ÏŠÏ‹ÎÎ°ïżœ" - }, - "maciceland": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒĂÂ°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€ĂĂ°ĂžĂŸĂœÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macroman": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șïŹïŹ‚â€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macromania": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ä‚ĆžâˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠÄƒĆŸÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șĆąĆŁâ€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macthai": { - "type": "_sbcs", - "chars": "Â«Â»â€ŠïąŒïąïą’ïą•ïą˜ïą‹ïąŽïą‘ïą”ïą—â€œâ€ïą™ïżœâ€ąïą„ïą‰ïą…ïą†ïą‡ïąˆïąŠïąïąïą“ïą–â€˜â€™ïżœÂ àžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșï»żâ€‹â€“â€”àžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčâ„ąàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™ÂźÂ©ïżœïżœïżœïżœ" - }, - "macturkish": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžÄžÄŸÄ°Ä±ĆžĆŸâ€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™ïżœË†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "macukraine": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘĐ«ĐŹĐ­ĐźĐŻâ€ Â°ÒÂŁÂ§â€ąÂ¶Đ†ÂźÂ©â„ąĐ‚Ń’â‰ ĐƒŃ“âˆžÂ±â‰€â‰„Ń–Â”Ò‘ĐˆĐ„Ń”Đ‡Ń—Đ‰Ń™ĐŠŃšŃ˜Đ…ÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Đ‹Ń›ĐŒŃœŃ•â€“â€”â€œâ€â€˜â€™Ă·â€žĐŽŃžĐŃŸâ„–ĐŃ‘ŃĐ°Đ±ĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽÂ€" - }, - "koi8r": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘â•“â•”â••â•–â•—â•˜â•™â•šâ•›â•œâ•â•žâ•Ÿâ• â•ĄĐâ•ąâ•Łâ•€â•„â•Šâ•§â•šâ•©â•Ș╫╏©юабцЎДфгхОĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘Ń”â•”Ń–Ń—â•—â•˜â•™â•šâ•›Ò‘â•â•žâ•Ÿâ• â•ĄĐĐ„â•ŁĐ†Đ‡â•Šâ•§â•šâ•©â•ȘÒâ•ŹÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "â”€â”‚â”Œâ”â””â”˜â”œâ”€â”Źâ”Žâ”Œâ–€â–„â–ˆâ–Œâ–â–‘â–’â–“âŒ â– âˆ™âˆšâ‰ˆâ‰€â‰„Â âŒĄÂ°ÂČÂ·Ă·â•â•‘â•’Ń‘Ń”â•”Ń–Ń—â•—â•˜â•™â•šâ•›Ò‘Ńžâ•žâ•Ÿâ• â•ĄĐĐ„â•ŁĐ†Đ‡â•Šâ•§â•šâ•©â•ȘÒĐŽÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "Ò›Ò“â€šÒ’â€žâ€Šâ€ â€Ąïżœâ€°Òłâ€čÒČÒ·Ò¶ïżœÒšâ€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąïżœâ€șïżœïżœïżœïżœïżœÓŻÓźŃ‘Â€ÓŁÂŠÂ§ïżœïżœïżœÂ«ÂŹÂ­ÂźïżœÂ°Â±ÂČĐïżœÓąÂ¶Â·ïżœâ„–ïżœÂ»ïżœïżœïżœÂ©ŃŽĐ°Đ±Ń†ĐŽĐ”Ń„ĐłŃ…ĐžĐčĐșĐ»ĐŒĐœĐŸĐżŃŃ€ŃŃ‚ŃƒĐ¶ĐČŃŒŃ‹Đ·ŃˆŃŃ‰Ń‡ŃŠĐźĐĐ‘ĐŠĐ”Đ•Đ€Đ“Đ„Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐŻĐ ĐĄĐąĐŁĐ–Đ’ĐŹĐ«Đ—ĐšĐ­Đ©Đ§ĐȘ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ ïżœÖ‡Ö‰)(»«—.՝,-ÖŠâ€ŠŐœŐ›ŐžÔ±ŐĄÔČŐąÔłŐŁÔŽŐ€Ô”Ő„Ô¶ŐŠÔ·Ő§ÔžŐšÔčŐ©ÔșŐȘÔ»Ő«ÔŒŐŹÔœŐ­ÔŸŐźÔżŐŻŐ€Ő°ŐŐ±Ő‚ŐČŐƒŐłŐ„ŐŽŐ…Ő”Ő†Ő¶Ő‡Ő·ŐˆŐžŐ‰ŐčՊŐșŐ‹Ő»ŐŒŐŒŐŐœŐŽŐŸŐŐżŐÖ€Ő‘ÖŐ’Ö‚Ő“ÖƒŐ”Ö„Ő•Ö…Ő–Ö†Őšïżœ" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„
†‡€‰Љâ€čĐŠÒšÒșĐŃ’â€˜â€™â€œâ€â€ąâ€“â€”ïżœâ„ąŃ™â€șŃšÒ›Ò»ŃŸÂ Ò°Ò±Ó˜Â€ÓšÂŠÂ§ĐÂ©Ò’Â«ÂŹÂ­ÂźÒźÂ°Â±Đ†Ń–Ó©Â”Â¶Â·Ń‘â„–Ò“Â»Ó™ÒąÒŁÒŻĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỀ\u0003á»Șỏở\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỚỰá»Čá»¶á»žĂá»Ž\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀáșąĂƒĂáș áș¶áșŹĂˆáșșáșŒĂ‰áșžá»†ĂŒá»ˆÄšĂá»ŠĂ’á»ŽĂ•Ă“á»Œá»˜á»œá»žá» á»šá»ąĂ™á»ŠĆšÂ Ä‚Ă‚ĂŠĂ”Æ ÆŻÄÄƒĂąĂȘĂŽÆĄÆ°Ä‘áș°Ì€Ì‰ÌƒÌÌŁĂ áșŁĂŁĂĄáșĄáșČáș±áșłáș”áșŻáșŽáșźáșŠáșšáșȘáș€á»€áș·áș§áș©áș«áș„áș­Ăšá»‚áș»áșœĂ©áșčềểễáșżá»‡ĂŹá»‰á»„áșŸá»’ĩíịĂČá»”á»Ă”Ăłá»á»“á»•á»—á»‘á»™á»á»Ÿá»Ąá»›á»ŁĂčá»–á»§Ć©ĂșỄừửữứựỳỷá»čĂœá»”á»" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "Â€Ââ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čƒŽ‘’“”‱–—˜ℱơâ€șĆ“ÂÂžĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżáƒáƒ‘áƒ’áƒ“áƒ”áƒ•áƒ–áƒ—áƒ˜áƒ™áƒšáƒ›áƒœáƒáƒžáƒŸáƒ áƒĄáƒąáƒŁáƒ€áƒ„áƒŠáƒ§áƒšáƒ©áƒȘძ჏ჭჟჯჰჱáƒČჳ჎ეჶçÚéĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "georgianps": { - "type": "_sbcs", - "chars": "Â€Ââ€šÆ’â€žâ€Šâ€ â€ĄË†â€°Ć â€čƒŽ‘’“”‱–—˜ℱơâ€șĆ“ÂÂžĆžÂ ÂĄÂąÂŁÂ€Â„ÂŠÂ§ÂšÂ©ÂȘ«­Ÿ¯°±Âȳޔ¶·žÂčÂșÂ»ÂŒÂœÂŸÂżáƒáƒ‘áƒ’áƒ“áƒ”áƒ•áƒ–áƒ±áƒ—áƒ˜áƒ™áƒšáƒ›áƒœáƒČáƒáƒžáƒŸáƒ áƒĄáƒąáƒłáƒŁáƒ€áƒ„áƒŠáƒ§áƒšáƒ©áƒȘძ჏ჭჟ჎ჯჰეÊçÚéĂȘëÏíßïðñĂČóÎÔö÷ÞĂčĂșĂ»ĂŒĂœĂŸĂż" - }, - "pt154": { - "type": "_sbcs", - "chars": "Ò–Ò’ÓźÒ“â€žâ€ŠÒ¶ÒźÒČÒŻÒ ÓąÒąÒšÒșÒžÒ—â€˜â€™â€œâ€â€ąâ€“â€”ÒłÒ·ÒĄÓŁÒŁÒ›Ò»ÒčÂ ĐŽŃžĐˆÓšÒ˜Ò°Â§ĐÂ©Ó˜Â«ÂŹÓŻÂźÒœÂ°Ò±Đ†Ń–Ò™Ó©Â¶Â·Ń‘â„–Ó™Â»Ń˜ÒȘÒ«ÒĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃ" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001áșČ\u0003\u0004áșŽáșȘ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013á»¶\u0015\u0016\u0017\u0018Ở\u001a\u001b\u001c\u001dỎ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~áș áșźáș°áș¶áș€áșŠáșšáșŹáșŒáșžáșŸá»€á»‚á»„á»†á»á»’á»”á»–á»˜á»ąá»šá»œá»žá»Šá»Žá»Œá»ˆá»ŠĆšá»€á»ČÕáșŻáș±áș·áș„áș§áș©áș­áșœáșčáșżá»á»ƒá»…ệốồổỗỠƠộờởịỰỚá»Șá»ŹÆĄá»›ÆŻĂ€ĂĂ‚ĂƒáșąÄ‚áșłáș”ÈÉÊáșșĂŒĂÄšá»łÄá»©Ă’Ă“Ă”áșĄá»·á»«á»­Ă™Ăšá»čá»”Ăá»ĄÆ°Ă ĂĄĂąĂŁáșŁÄƒá»Żáș«ĂšĂ©ĂȘáș»ĂŹĂ­Ä©á»‰Ä‘á»±ĂČĂłĂŽĂ”á»á»á»„ĂčĂșĆ©á»§Ăœá»Łá»ź" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#„%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‟ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[„]^_`abcdefghijklmnopqrstuvwxyz{|}‟ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "hproman8": { - "type": "_sbcs", - "chars": "Â€ÂÂ‚ÂƒÂ„Â…Â†Â‡ÂˆÂ‰ÂŠÂ‹ÂŒÂÂŽÂÂÂ‘Â’Â“Â”Â•Â–Â—Â˜Â™ÂšÂ›ÂœÂÂžÂŸÂ Ă€Ă‚ĂˆĂŠĂ‹ĂŽĂÂŽË‹Ë†ÂšËœĂ™Ă›â‚€ÂŻĂĂœÂ°Ă‡Ă§Ă‘Ă±ÂĄÂżÂ€ÂŁÂ„Â§Æ’ÂąĂąĂȘÎûåéóĂșĂ ĂšĂČĂčĂ€Ă«Ă¶ĂŒĂ…ĂźĂ˜Ă†Ă„Ă­ĂžĂŠĂ„ĂŹĂ–ĂœĂ‰ĂŻĂŸĂ”ĂĂƒĂŁĂĂ°ĂĂŒĂ“Ă’Ă•Ă”Ć ĆĄĂšĆžĂżĂžĂŸÂ·Â”Â¶ÂŸâ€”ÂŒÂœÂȘÂșÂ«â– Â»Â±ïżœ" - }, - "macintosh": { - "type": "_sbcs", - "chars": "Ă„Ă…Ă‡Ă‰Ă‘Ă–ĂœĂĄĂ ĂąĂ€ĂŁĂ„Ă§Ă©ĂšĂȘëíÏßïñóĂČÎöÔĂșĂčĂ»ĂŒâ€ Â°ÂąÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÂŽÂšâ‰ Ă†Ă˜âˆžÂ±â‰€â‰„Â„Â”âˆ‚âˆ‘âˆÏ€âˆ«ÂȘÂșâ„ŠĂŠĂžÂżÂĄÂŹâˆšÆ’â‰ˆâˆ†Â«Â»â€ŠÂ Ă€ĂƒĂ•Ć’Ć“â€“â€”â€œâ€â€˜â€™Ă·â—ŠĂżĆžâ„Â€â€čâ€șïŹïŹ‚â€ĄÂ·â€šâ€žâ€°Ă‚ĂŠĂĂ‹ĂˆĂĂŽĂĂŒĂ“Ă”ïżœĂ’ĂšĂ›Ă™Ä±Ë†ËœÂŻË˜Ë™ËšÂžËË›Ë‡" - }, - "ascii": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœ" - }, - "tis620": { - "type": "_sbcs", - "chars": "ïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœïżœàžàž‚àžƒàž„àž…àž†àž‡àžˆàž‰àžŠàž‹àžŒàžàžŽàžàžàž‘àž’àž“àž”àž•àž–àž—àž˜àž™àžšàž›àžœàžàžžàžŸàž àžĄàžąàžŁàž€àž„àžŠàž§àžšàž©àžȘàž«àžŹàž­àžźàžŻàž°àž±àžČàžłàžŽàž”àž¶àž·àžžàžčàžșïżœïżœïżœïżœàžżàč€àčàč‚àčƒàč„àč…àč†àč‡àčˆàč‰àčŠàč‹àčŒàčàčŽàčàčàč‘àč’àč“àč”àč•àč–àč—àč˜àč™àčšàč›ïżœïżœïżœïżœ" - } -} \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js deleted file mode 100644 index 066f904..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js +++ /dev/null @@ -1,179 +0,0 @@ -"use strict"; - -// Manually added data to be used by sbcs codec in addition to generated one. - -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "Ă„Ä€ÄĂ‰Ä„Ă–ĂœĂĄÄ…ÄŒĂ€ÄÄ†Ä‡Ă©ĆčĆșÄŽĂ­ÄÄ’Ä“Ä–ĂłÄ—ĂŽĂ¶Ă”ĂșÄšÄ›ĂŒâ€ Â°Ä˜ÂŁÂ§â€ąÂ¶ĂŸÂźÂ©â„ąÄ™Âšâ‰ ÄŁÄźÄŻÄȘâ‰€â‰„Ä«Ä¶âˆ‚âˆ‘Ć‚Ä»ÄŒÄœÄŸÄčÄșĆ…Ć†ĆƒÂŹâˆšĆ„Ć‡âˆ†Â«Â»â€ŠÂ ĆˆĆĂ•Ć‘ĆŒâ€“â€”â€œâ€â€˜â€™Ă·â—ŠĆĆ”Ć•Ć˜â€čâ€șĆ™Ć–Ć—Ć â€šâ€žĆĄĆšĆ›ĂĆ€Ć„ĂĆœĆŸĆȘÓÔƫƟÚƯưƱĆČĆłĂĂœÄ·Ć»ĆĆŒÄąË‡" - }, - - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżâ–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ń€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃĐŃ‘Đ„Ń”Đ‡Ń—ĐŽŃžÂ°âˆ™Â·âˆšâ„–â‚Źâ– Â " - }, - - "mik": { - "type": "_sbcs", - "chars": "ĐĐ‘Đ’Đ“Đ”Đ•Đ–Đ—Đ˜Đ™ĐšĐ›ĐœĐĐžĐŸĐ ĐĄĐąĐŁĐ€Đ„ĐŠĐ§ĐšĐ©ĐȘЫЏЭПЯабĐČгЎДжзОĐčĐșĐ»ĐŒĐœĐŸĐżŃ€ŃŃ‚ŃƒŃ„Ń…Ń†Ń‡ŃˆŃ‰ŃŠŃ‹ŃŒŃŃŽŃâ””â”Žâ”Źâ”œâ”€â”Œâ•Łâ•‘â•šâ•”â•©â•Šâ• â•â•Źâ”â–‘â–’â–“â”‚â”€â„–Â§â•—â•â”˜â”Œâ–ˆâ–„â–Œâ–â–€Î±ĂŸÎ“Ï€ÎŁÏƒÂ”Ï„ÎŠÎ˜Î©ÎŽâˆžÏ†Î”âˆ©â‰ĄÂ±â‰„â‰€âŒ âŒĄĂ·â‰ˆÂ°âˆ™Â·âˆšâżÂČ■ " - }, - - "cp720": { - "type": "_sbcs", - "chars": "\x80\x81éù\x84Ă \x86çĂȘëÚïß\x8d\x8e\x8f\x90\u0651\u0652ĂŽÂ€Ù€Ă»Ăčۥ۹ۣۀ£ۄۊۧۚ۩ŰȘ۫ۏۭ۟ۯ۰۱ŰČŰłŰŽŰ”Â«Â»â–‘â–’â–“â”‚â”€â•Ąâ•ąâ•–â••â•Łâ•‘â•—â•â•œâ•›â”â””â”Žâ”Źâ”œâ”€â”Œâ•žâ•Ÿâ•šâ•”â•©â•Šâ• â•â•Źâ•§â•šâ•€â•„â•™â•˜â•’â•“â•«â•Șâ”˜â”Œâ–ˆâ–„â–Œâ–â–€Ű¶Ű·ŰžŰčŰșÙÂ”Ù‚ÙƒÙ„Ù…Ù†Ù‡ÙˆÙ‰ÙŠâ‰Ą\u064b\u064c\u064d\u064e\u064f\u0650â‰ˆÂ°âˆ™Â·âˆšâżÂČ■\u00a0" - }, - - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", - - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", - - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", - - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", - - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", - - "cp819": "iso88591", - "ibm819": "iso88591", - - "cyrillic": "iso88595", - - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", - - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", - - "hebrew": "iso88598", - "hebrew8": "iso88598", - - "turkish": "iso88599", - "turkish8": "iso88599", - - "thai": "iso885911", - "thai8": "iso885911", - - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", - - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", - - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", - - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", - - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", - - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", - - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", - - "strk10482002": "rk1048", - - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", - - "gb198880": "iso646cn", - "cn": "iso646cn", - - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", - - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", - - "mac": "macintosh", - "csmacintosh": "macintosh", -}; - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json deleted file mode 100644 index 3c3d3c2..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json +++ /dev/null @@ -1,122 +0,0 @@ -[ -["8740","䏰ä°Čä˜ƒä–Šä•žđ§‰§ä”·ä–łđ§Č±äłąđ§ł…ăź•äœ¶ä„ä±‡ä±€đ€Šżđ٘—đ§’đŠș‹đ§ƒ’ä±—đȘ‘䝏䗚äȅ𧱏䎇äȘ€äšĄđŠŹŁçˆ„đ„©”đĄ©ŁđŁž†đŁœĄæ™ć›»"], -["8767","ç¶•ć€đšźčă·ŽéœŽđ§ŻŻćŻ›đĄ”žćȘ€ă˜„đ©ș°ć«‘ćź·ćłŒæźè–“đ©„…ç‘Ąç’ăĄ”đĄ”“đŁšžđŠ€Ąă»Ź"], -["87a1","đ„Łžă«”ç«ŒéŸ—đ€…Ąđš€đهȘđ ȘŠđىžäŒŠè’„éŸ–éŻä€°è˜“ćą–éŠéˆ˜ç§çšČæ™ æš©èąç‘ŒçŻ…æž‚çšŹć‰é†ă“Šç„đ„¶čç“†éż‡ćžłä€Żć‘Œä„±đŁšŽć ˜ç©Čđ§­„èźäšźđŠșˆä†đ„¶™çźźđą’Œéżˆđą“đą“‰đą“Œéż‰è”„đŁ–»ä‚ŽéżŠä“ĄđȘ·żæ‹çźéż‹"], -["8840","㇀",4,"đ „Œă‡…đ ƒ‘đ ƒă‡†ă‡‡đ ƒ‹đĄżšă‡ˆđ ƒŠă‡‰ă‡Šă‡‹ă‡Œđ „Žă‡ă‡ŽÄ€ĂÇĂ€Ä’Ă‰ÄšĂˆĆŒĂ“Ç‘Ă’àżżĂŠÌ„áșŸàżżĂŠÌŒá»€ĂŠÄĂĄÇŽĂ É‘Ä“Ă©Ä›ĂšÄ«Ă­ÇĂŹĆĂłÇ’ĂČĆ«ĂșǔĂčǖǘǚ"], -["88a1","ÇœĂŒàżżĂȘ̄áșżàżżĂȘ̌ềĂȘɡ⏚⏛"], -["8940","đȘŽ©đĄ……"], -["8943","攊"], -["8946","䞜滝锎釟"], -["894c","đ§œ”æ’‘äŒšäŒšäŸšć…–ć…Žć†œć‡€ćŠĄćŠšćŒ»ćŽć‘ć˜ć›ąćŁ°ć€„ć€‡ć€Čć€Žć­ŠćźžćźŸćȚćș†æ€»æ–‰æŸŸæ „æĄ„攎炌甔çș€çșŹçșș织经统猆猷è‰șè‹èŻè§†èźŸèŻąèœŠèœ§èœź"], -["89a1","ç‘çłŒç·æ„†ç«‰ćˆ§"], -["89ab","é†Œçąžé…žè‚Œ"], -["89b0","èŽ‹èƒ¶đ §§"], -["89b5","è‚Ÿé»‡äłé·‰éžŒä°Ÿđ©·¶đ§€ŽéžŠđȘ„łă—"], -["89c1","æșšèˆŸç”™"], -["89c5","䀑驏éȘéŸ™çŠ‡đš‘ŹđĄ·Šđ —đą«Šäž€äșäș€äș‡äșżä»«äŒ·ă‘ŒäŸœăčˆć€ƒć‚ˆă‘œă’“ă’„ć††ć€…ć‡›ć‡Œćˆ…äș‰ć‰čćŠćŒ§ă—‡ćŽ©ă•‘ćŽ°ă•“ć‚ćŁă•­ă•Č㚁撓撣撮ć’čć“ć“Żć”˜ć”Łć”šă–˜ć”żă–„ă–żć——ă—…"], -["8a40","𧶄攄"], -["8a43","đ ±‚đ Ž•đ„„«ć–đął†ă§Źđ èč†đ€¶žđ©“„ä“đš‚Ÿçș𱰾㹮䟕𹅝đЧČđ€·Șæ“đ ”Œđ ŸŽđ ł•đĄƒŽæ’èčŸđ ș–đ °‹đ œ€đąČ©đš‰–đ€““"], -["8a64","đ ”†đ©©đšƒ©äŸŽđ€ș§đął‚éȘČă©§đ©—Žăż­ă”†đ„‹‡đ©Ÿ”đ§Łˆđą”„é”źé •"], -["8a76","ä™đŠ‚„æ’Žć“Łđą”ŒđąŻŠđĄ·ă§»đĄŻ"], -["8aa1","𩛚𩜖𧩠æ“Șđ„’đ ±ƒèčšđą†Ąđš­Œđ œ±"], -["8aac","䠋𠆩ăżșćĄłđą¶"], -["8ab2","đ€—ˆđ “ŒđŠ‚—đ œŒđ ¶–ć•č䂻äŽș"], -["8abb","äȘŽđą©ŠđĄ‚è†ȘéŁ”đ ¶œæčă§Ÿđą”è·€ćšĄæ‘Œăčƒ"], -["8ac9","đȘ˜đ ž‰đą«đął‰"], -["8ace","𡃈𣧂㩒㹆𹊛㕾đ„č‰đąƒ‡ć™’đ Œ±đąČČđ©œ ă’Œæ°œđ€ž»"], -["8adf","𧕮đąș‹đąˆˆđȘ™›đšłđ čșđ °ŽđŠ œçŸ“đĄƒđą ƒđą€čă—»đ„‡Łđ șŒđ Ÿđ șȘăŸ“đ Œ°đ ”‡đĄ…đ čŒ"], -["8af6","đ ș«đ ź©đ ”ˆđĄƒ€đĄ„œăżč𱚖æČđ Ÿ­"], -["8b40","𣏮đ§˜čđąŻŽđ ”Ÿđ ”żđą±‘đą±•ăš˜đ ș˜đĄƒ‡đ ŒźđȘ˜ČđŠ­đšł’đš¶™đšłŠé–Șć“Œè‹„ć–č"], -["8b55","𩻃鰊éȘ¶đ§žđą·źç…€è…­èƒŹć°œđŠ•Čè„Žăž—ćŸđš‚œé†¶đ »ș𠾏đ č·đ »»ă—đ€·«ă˜‰đ ł–ćšŻđąž”đĄƒ‰đ žđ čžđĄžđĄ…ˆđšˆ‡đĄ‘•đ ččđ€čđą¶€ć©”đĄ€đĄ€žđĄƒ”đĄƒ¶ćžœđ ž‘"], -["8ba1","đ§š”đš‹đ Ÿ”đ č»đ„…Ÿăœƒđ Ÿ¶đĄ†€đ„‹˜đȘŠœđ€§šđĄ șđ€…·đš‰Œćą™ć‰šă˜šđ„œœçźČć­šä €äŹŹéŒ§ä§§é°Ÿéźđ„­ŽđŁ„œć—»ă—Čćš‰äžšć€‚đĄŻđŻĄžé‘đ ‚†äč›äș»ă”Ÿć°Łćœ‘ćż„ăŁș扌攔æ­șæ°”æ°șçŹçˆ«äžŹçŠ­đ€Ł©çœ’ç€»çłč眓đЉȘ㓁"], -["8bde","đŠ‹è€‚è‚€đŠ˜’đŠ„‘ćèĄ€è§đ§ąČèź èŽé’…é•žé•żé—šđšžéŸŠéĄ”éŁŽéŁžé„Łđ© é±ŒéžŸé»„æ­Żï€‡äž·đ ‚‡é˜æˆ·é’ą"], -["8c40","ć€»æ·Ÿđ©±łéŸŠă·‰èąđ€…Žç·ćł”äŹ đ„‡ă•™đ„Ž°æ„ąđššČ蟧釶熑朙çŽș𣊁đȘ„‡ăČ‹đĄŠ€äŹçŁ€ç‚ć†źđšœä€‰æ©ŁđȘŠșäˆŁè˜đ ©ŻçšȘ𩄇đš«Șé•çćŒ€đąŸéŽç›™đš§ŁéŸ§çŸäșŁäż°ć‚ŒäžŻäŒ—éŸšćŽç¶‹ćą’ćŁđĄ¶¶ćș’ćș™ćż‚đąœ’æ–‹"], -["8ca1","đŁčæ€™æ©ƒđٱٿłż"], -["8ca7","çˆ€đ€”…çŽŒă»›đ€š“ćŹ•ç’čèźƒđ„Č€đ„š•çȘ“çŻŹçłƒçčŹè‹žè–—éŸ©èąéŸȘèșčéŸ«èżè•Ÿé§ éˆĄéŸŹđš¶č𥐿䁱䊹暚"], -["8cc9","éĄšæ«ä‰¶ćœœ"], -["8cce","è—–đ€„»èŠżđ§„äČđŠ”Žć”»đŠŹ•đŠŸŸéŸ­éŸźćź–éŸŻæ›§ç蛿č—ç§Šă¶ˆä“ƒđى–𹞖䎚䔶"], -["8ce6","法𣬚è«č汞㎒𣕑攞éŸČç…—ä•˜đ€ƒŹđĄžŁä±·ă„žă‘Šđ †€đŠ±è«ŒäŸŽđ ˆčćŠżè…ŹéĄ–đ©ŁșćŒ»"], -["8d40","𠼟"], -["8d42","𹇁𚄭䄂䚻đ©čăŒ‡éŸłđȘ†”äƒžăŸ–ä›·đŠ±†ä…ŒđššČđ§żä•­ăŁ”đ„’šä•Ąä”›ä¶‰ä±»ä”¶ä—Șăżˆđ€Źă™Ąä“žä’œä‡­ćŽŸć”ˆć”–ă·Œă ć¶€ć¶čă  ă žćč‚ćșœćŒ„ćŸƒă€ˆă€”ă€żă„æƒ—æ„œćł„ăŠ‰æ†·æ†čæ‡ăŠžæˆŹæŠæ‹„æŒ˜ă§žćš±"], -["8da1","ăšƒæąæ»æ‡æ‘šă©‹æ“€ćŽ•ć˜ĄéŸŸăȘ—æ–†ăȘœæ—żæ™“ă«Čæš’ăŹąæœ–ă­‚æž€æ €ă­˜æĄŠæą„ă­Čă­±ă­»æ€‰æ„ƒç‰œæ„€æŠŸæŠ…ăźŒæ§–ăŻæ©„æ©Žæ©±æȘ‚㯏æȘ™ăŻČæȘ«æȘ”æ«”æ«¶æźæŻæŻȘæ±”æČȘăł‹æŽ‚æŽ†æŽŠæ¶ăłŻæ¶€æ¶±æž•æž˜æž©æș†đ𧀿ș»æ»ąæ»šéœżæ»šæ»©æŒ€æŒŽă”†đŁœæŸæŸŸă”Ș㔔熷ćČ™ă¶Šç€Źă¶‘çç”çŻçżç‚‰đ Œ„äă—±đ »˜"], -["8e40","đŁ»—ćžŸđŠ»“ç„Ÿđ„Ÿ ă™ŽæŠąđšŻ©ć­Žç©‰đ„ŁĄđ©“™ç©„ç©œđ„ŠŹçȘ»çȘ°ç«‚ç«ƒç‡‘đŠ’ä‡Šç«šç«ç«Ș䇯ć’Čđ„°çŹ‹ç­•çŹ©đ„ŒŽđ„łŸçźąç­ŻèŽœđ„źŽđŠ±żçŻèĄçź’çźžđ„Ž ă¶­đ„±„è’’çŻșç°†ç°”đ„łç±„çČƒđ€ą‚çČŠæ™œđ€•žçł‰çł‡çłŠç±Žçłłçł”çłŽ"], -["8ea1","çč§ä”đŠč„ç”đŠ»–ç’ç¶‰ç¶«ç„”ç¶łç·’đ€—đŠ€©ç·€ăŽ“ç·”đĄŸčç·„đš­çžđŠ„ĄđŠ…šçčźçș’äŒ«é‘Źçž§çœ€çœçœ‡ç€¶đŠ‹é§ĄçŸ—đŠ‘çŸŁđĄ™Ąđ šä•œđŁŠä”ƒđšŒșçżșđŠ’‰è€…è€ˆè€è€šè€ŻđȘ‚‡đŠłƒè€»è€ŒèĄđąœ”äŠ‰đŠ˜ŠđŁ·ŁđŠ›šæœ„è‚§đš©ˆè„‡è„šćą°đą›¶æ±żđŠ’˜đ€Ÿžæ“§đĄ’Šèˆ˜đĄĄžæ©“đ€©„đ€Ș•ä‘șèˆ©đ ŹđŠ©’đŁ”ŸäżčđĄ“œè“ąèąđŠŹŠđ€Š§đŁ”°đĄłđŁ·žèŠȘæ€›đŻŠ”ä‡›"], -["8f40","è•‹è‹èŒšđ ž–đĄžŽă›đŁ…œđŁ•šè‰»è‹ąèŒ˜đŁș‹đжŁđŠŹ…đŠź—đŁ—Žă¶żèŒć—ŹèŽ…ä”‹đж„èŽŹèè“ă‘ŸđŠ»”æ©—è•šă’–đŠč‚đą»Żè‘˜đ„Ż€è‘±ă·“ä“€æȘ§è‘ŠđŁČ”ç„˜è’šđŠź–đŠč·đŠčƒè“žèèŽ‘ä’ è’“è“€đ„Č‘ä‰€đ„ł€ä•ƒè”Žć«ČđŠș™ä”§è•łä”–æžżè˜–"], -["8fa1","đš˜„đš˜»è—đ§‚ˆè˜‚đĄ–‚đ§ƒđŻŠČä•Șè˜šă™ˆđĄąąć·đ§Žšè™Ÿè±đȘƒžèŸźđą°§èž±èŸšè ć™Ąè™ŹæĄ–ä˜èĄ…èĄ†đ§— đٶčđ§—€èĄžèąœä™›èąŽèą”æèŁ…ç·đ§œèŠ‡èŠŠèŠŠèŠ©èŠ§èŠŒđšš„è§§đ§€€đ§ȘœèȘœçž“釟èȘđ§©™ç«©đ§ŹșđŁŸäœ“đ§Źžç…ŒèŹŒèŹŸđ„°đ„•„èŹżè­Œè­èȘ©đ€©șèźèź›èȘŻđĄ›Ÿä˜•èĄèČ›đ§””đ§¶đŻ§”ăœ„đ§”“èł–đ§¶˜đ§¶œèŽ’èŽƒđĄ€èł›çœèŽ‘đ€ł‰ă»è”·"], -["9040","è¶©đš€‚đĄ€”đ€ŠŠă­Œđš†Œđ§„Œç«§èș­èș¶è»ƒé‹”èŒ™èŒ­đš„đš’èŸ„éŒƒđȘŠŸđ ©èŸłä€Șđš§žđš”œđŁ¶»ć»žđŁ‰ąèżčđȘ€”đššŒđš”đąŒ„ăŠ€đŠ»—é€·đš”Œđ§ȘŸéĄđš•Źđš˜‹é‚šđšœ“éƒ„đš›Šé‚źéƒœé…§ă«°é†©é‡„çȏ𚀳đĄș‰éˆŽæČŸé‰é‰ąđ„–čéŠč𚫆đŁČ›đšŹŒđ„—›"], -["90a1","đ Ž±éŒŹé«đš«ĄđšŻ«ç‚ć«ƒđš«ąđš«„ä„„é‰„đšŻŹđš°č𹯿鍳鑛èșŒé–…é–ŠéŠé– æż¶äŠčđą™șđš›˜đĄ‰ŒđŁžźä§Ÿæ°œé™»éš–ä…ŹéšŁđŠ»•æ‡šéš¶çŁ”đš« éšœćŒäŠĄđŠČžđ ‰ŽđАđ©‚Żđ©ƒ„đ€«‘đĄ€•đŁŒŠéœ±è™‚éœ¶äšä”œä–…đ€«©ç”ć­éœ›éœđ©‡•é—ć­Šđ©‡«éŸé„ćƒđŁ‚·đŁ‚Œéž‰éžŸéž±éžŸéŸ€éŸ’éŸ đ„‘ŹéŸźçœđ©łéŸżéŸ”đ©đ§„șä«‘é Žé łéĄ‹éĄŠăŹŽđ§…”ă”‘đ ˜°đ€…œ"], -["9140","đ„œ†éŁŠéą·éŁˆéŁ‡ä«żđŠŽ§đĄ›“ć–°éŁĄéŁŠéŁŹéžé€čđ€š©ä­Čđ©Ą—đ©€…é§”éšŒéš»éšé©˜đ„œ„ă›„đ©‚±đ©Ż•é« é«ąđ©Ź…é«Žä°ŽéŹ”éŹ­đš˜€ć€ŽéŹŽđŠŠšăŁƒđŁœé­é­€đ©ŽŸć©…đĄĄŁéźŽđ€‰‹é°‚éŻżé°Œđ©čšé·”đ©Ÿ·đȘ†’đȘ†«đȘƒĄđȘ„ŁđȘ‡Ÿé”Ÿé¶ƒđȘ„ŽéžŽæąˆ"], -["91a1","é·„đą…›đȘ†“đȘˆ đĄ€»đȘˆłéŽčđȘ‚čđȘŠŽéșéș•éșžéșąäŽŽéșȘéșŻđ€€é»ă­ ă§„㮝äŒČăžŸđš°«éŒ‚éŒˆäź–é€đŠ¶ąéŒ—éŒ–éŒčćšŸćšŠéœ…éŠžđ©‚‹éŸČè‘żéœąéœ©ç«œéŸŽçˆ–äźŸđ€„”đ€Š»ç…·đ€§žđ€ˆđ€©‘çŽžđšŻšđĄŁșçŠŸđš„Ÿđšž¶é©éłđš©„é‹ŹéŽé‹đš„Źđ€’čçˆ—ă»«çČç©ƒçƒđ€‘łđ€žç…ŸđĄŸŻç‚ŁđĄąŸđŁ–™ă»‡đĄą…đ„ŻđĄŸžăœąđĄ›»đĄ čă›ĄđĄŽđĄŁ‘đ„œ‹ăœŁđĄ›€ć›đ€š„đĄŸđĄŠš"], -["9240","đĄ†đĄ’¶è”ƒđŁšŠè”ƒè‘•đ€Š”đ§…„đŁž±đ„•œđŁ»»đ§’ä“ŽđŁ›źđ©ŠđŠŒŠæŸčăœłă°•ă·§ćĄŹđĄ€ąæ ä—đŁœżđ€ƒĄđ€‚‹đ€„đŠ°Ąć“‹ćšžđŠš±ćš’đ żŸđ źšđ žé†đšŹ“éŽœä»žć„«ă ™đ€¶äșŒđ ‘„đ żäœ‹äŸŠđ„™‘ć©šđ †«đ ‹ăŠ™đ ŒŠđ ”ă”äŒ©đ ‹€đšșłđ ‰”è«šđ ˆŒäș˜"], -["92a1","ćƒć„äŸąäŒƒđ€šŽđŁșŠäœ‚ć€źćŹć‚äżŒäż„ć˜ćƒŒć…™ć…›ć…ć…žæč¶đŁ–•đŁžčđŁșżæ”Č𡱄đŁș‰ć†šć‡ƒđ — ä“đ ’Łđ ’’đ ’‘è”șđšȘœđ œŽć‰™ćŠ€đ Ąłć‹Ąéźä™șç†Œđ€ŽŒđ ° đ€ŠŹđĄƒ€æ§‘đ žç‘čă»žç’™ç”ç‘–çŽ˜äźŽđ€ȘŒđ€‚ćă–„çˆđ€ƒ‰ć–Žđ …ć“đ Ż†ćœé‰é›ŽéŠćŸćžćżă˜ŸćŁ‹ćȘ™đš©†đĄ›șđĄŻđĄœćšŹćŠžéŠć©Ÿć«ćš’đ„„†đĄ§łđĄĄĄđ€Š•ă›”æŽ…ç‘ƒćšĄđ„șƒ"], -["9340","ćȘđšŻ—đ “é ç’ŒđĄŒƒç„…ä„Čéˆđš§»éŽœăž ć°žćȞćčžćčˆđĄŠ–đĄ„ŒđŁ«źć»ć­đĄ€ƒđĄ€„ăœđĄą ă›đĄ›Ÿă›“è„Ș𚩇đĄ¶șđŁ‘ČđšŠšćŒŒćŒŽđĄ€§đĄž«ć©«đĄœ»ć­„è˜”đ§—œèĄ æŸđąĄ đą˜«ćż›ășžđą–Żđą–Ÿđ©‚ˆđŠœłæ‡€đ €Ÿđ †đą˜›æ†™æ†˜æ”đąČ›đąŽ‡đ€›”đ©…"], -["93a1","æ‘±đ€™„đą­Ș㚩𹏹𣑐đ©ŁȘđąčžæŒ·đȘ‘›æ’¶æŒ±æ‘đ€§Łđą”§æŠ€đąČĄæ»æ•«æ„ČăŻŽđŁ‚ŽđŁŠ­đ€Š‰đŁŠ«ć”đŁ‹ đĄŁ™đ©żæ›ŽđŁŠ‰đŁ†łă« ä†đ„–„đšŹąđ„–đĄ›Œđ„•›đ„„çŁźđŁ„ƒđĄ ȘđŁˆŽă‘€đŁˆđŁ†‚đ€‹‰æšŽđŠŽ€æ™«äź“æ˜°đ§Ą°đĄ·«æ™ŁđŁ‹’đŁ‹Ąæ˜žđ„ĄČ㣑đŁ șđŁžŒăź™đŁžąđŁŸç“ăź–æžđ€˜Șæą¶æ žăŻ„æȘŸăĄŁđٟ•đ€’‡æšłæ©’æ«‰æŹ…đĄ€’æ”‘æą˜æ©ŒăŻ—æ©șæ­—đŁż€đŁČšéŽ é‹ČđšŻȘđš«‹"], -["9440","éŠ‰đš€žđš§œé‘§æ¶„æŒ‹đ€§Źæ”§đŁœżă¶æž„đ€€ŒćšœæžŠćĄ‡æŽ€çĄ‚ç„»đ€Œšđ€‰¶çƒ±ç‰çŠ‡çŠ”đ€žđ€œ„ć…čđ€Ș€đ —«ç‘șđŁ»žđŁ™Ÿđ€©Šđ€€—đ„żĄăŒ†ăș±đ€«Ÿđš°ŁđŁŒ”æ‚§ă»łç“ŒçŒéŽ‡ç·ä’ŸđŠ·Șä•‘ç–ƒăœŁđ€ł™đ€Ž†ăœ˜ç••ç™łđȘ—†ăŹ™ç‘šđš«Œđ€Š«đ€ŠŽă«»"], -["94a1","ă·đ€©Žă»żđ€§…đ€Łłé‡șćœČé‚đš«ŁđĄĄ€ćƒŸđ„ˆĄđ„‡§çžđوČçœŽçœç»đ€š—đŁžă©žđ€Ł°çžç’›ășżđ€Șșđ€«‡äƒˆđ€Ș–đІźéŒ‡đ„–ç žçąçąˆçŁ’çç„™đ§đ„›Łä„ŽçŠ›è’–çŠ„æš­đŁ»șçšș秮䅼𡛩ä„Čéˆ”ç§±đ ”Œđ€ŠŒđ Š™đٶșđĄźă–—ć•«ă•°ăšȘđ ‡”đ °ç«ąć©™đą›”đ„ȘŻđ„Șœćšđ ‰›çٰćšȘđ„Ż†ç«Ÿä‡čç±ç±­äˆ‘đ„źłđ„șŒđ„șŠçłđ€§č𡞰çČŽç±ŒçČźæȘČç·œçž‡ç·“çœŽđŠ‰Ą"], -["9540","đŠ…œđ§­ˆç¶—đ„ș‚ä‰ȘđŠ­”đ €–æŸ–đ ŽđŁ—ćŸ„đŠ’đŠžđ€„ąçżçŹ§đ  Źđ„«©đ„”ƒçŹŒđ„žŽé§Šè™…é©ŁæšœđŁżă§ąđ€§·đŠ–­éšŸđŠ– è’€đ§„§đŠł‘ä“Șè„·ä‚èƒ†è„‰è…‚đŠžŽéŁƒđŠ©‚è‰ąè‰„đŠ©‘è‘“đŠ¶§è˜đ§ˆ›ćȘ†ä…żđĄĄ€ćŹ«đĄąĄć«€đĄŁ˜èš đŻŠŒđŁ¶è ­đ§ąćš‚"], -["95a1","èĄźäœ…èą‡èążèŁŠè„„è„đ„šƒè„”đ§ž…đ§ž„đšŻ”đšŻ™đšźœđš§čăș­è’Łä›”䛏ăŸČèšœèšœđ©‘ˆćœéˆ«đ€Š„æ—”ç„©çƒ„đĄĄ…é”­èČŸèł©đ§·œćŠšçŸƒć§°äźă›”èžȘèș§đ€°‰èŒ°èœŠä‹Žæ±˜æŸ»đąŒĄäą›æœčæș‹đĄŸšéŻ©ăš”đ€€Żé‚»é‚—ć•±ä€†é†»é„đš©‹äąđš«Œé§đš°đš°»è“„èš«é–™é–§é–—é––đšŽŽç‘…ă»‚đ€Łżđ€©‚đ€Șă»§đŁˆ„éšđš»§đščŠđšč„ă»Œđ€§­đ€©žđŁżźç’ç‘«ă»Œéđ©‚°"], -["9640","æĄ‡äšđ©‚“đ„ŸŸééšđšŠ‰đš°ŠđšŹŻđŠŽŸéŠșćŹ‘è­©ä€Œçčđ€ˆ›éž›é±é€žđ ŒŠć·đšŻ…đ€ȘČé Ÿđ©“šé‹¶đ©——é‡„ä“€đš­đ€©§đš­€éŁœđš©…ăŒ€éˆȘä€„è”é€»é„đ§Ź†ă·œéŠ›ä­ŻéŠȘé©œđš­„đ„ŁˆæȘéšĄć«ŸéšŻđ©Ł±äźđ©„ˆéŠŒäźœäź—éœćĄČđĄŒ‚ć ąđ€Šž"], -["96a1","đĄ“šçĄ„đąœŸđŁ¶žæŁ…ă”œé‘˜ă€§æ…đąžđą„«æ„‡é±é±“é±»é°”é°é­żéŻđ©ž­éźŸđȘ‡”đȘƒŸéŽĄäČźđ€„„éž˜äȰ鮌đȘ†ŽđȘƒ­đȘƒłđ©€Żé¶„è’œđŠž’đŠżŸđŠź‚è—Œä”łđŠ¶€đŠș„đŠ·°è è—źđŠž€đٟ—đЁ€ç§ąđŁ–œđŁ™€ä€­đ€§žă”ąé›éŠŸéˆđ Šżçąčé‰·é‘äż€ă‘€é€đ„•ç œçĄ”çą¶çĄ‹đĄ—đŁ‡‰đ€„ăššäœČæżšæż™ç€žç€žć”đ€†”ćž»ćŁłćžŠéŽ–ćŸ—ç„Žă’Żđ€†Źç‡«đŠ±€đ€Ÿ—ćŹšđĄž”đš©‰"], -["9740","æ„Œć«Žćš‹äŠŒđ€’ˆăœŹä­»đš§ŒéŽ»éŽžđĄŁ–đ Œè‘Č𩳀𡐓đ€‹șđą°Šđ€ćŠ”đŁ¶·đŠç¶šđŠ…›đŠ‚€đ€Ščđ€Š‹đš§șé‹„çąă»©ç’Žđš­ŁđĄąŸă»Ąđ€Șłæ«˜çłç»ă»–đ€šŸđ€Ș”đĄŸ™đ€©Šđ Ž§đĄ€đ€§„ç‘ˆđ€€–ç‚„đ€„¶éŠ„çŠéŸđ “ŸéŒ±đš«Žđšš–éŽ†đšŻ§đ„—•ä€”đšȘ‚ç…«"], -["97a1","đ€„ƒđ łżćš€đ ˜šđ Ż«đ Čžć”‚ç§„đĄŸșç·ŸđĄ›‚đ€©đĄĄ’ä”źéăœŠđš«€đ€Š­ćŠ°đĄążđĄąƒđ§’„ćȘĄă›ąđŁ”›ăš°é‰Ÿć©čđšȘđĄĄąéŽăłđ ȘŽäȘ–ăŠŠćƒŽă”©ă”ŒđĄŽœç…”ä‹»đšˆ˜æžđ©ƒ€ä“«æ”—đ§čç§æČŻăł–đŁż­đŁž­æž‚æŒŒă”Żđ ”ç•‘ăšŒă“ˆäš€ă»šäĄ±ć§„é‰źä€Ÿèœđš°œđŠŻ€ć ’ćŸˆă›–đĄ‘’çƒŸđ€ąđ€©±đążŁđĄŠ°đąŽœæąčæ„§đĄŽ˜đŁ“„đ§ŻŽđŁ›ŸđšȘƒđٟ–đŁșđ€ČŸæššđٚ­đŠČ·èŸä“Ÿä“Ž"], -["9840","đŠŽŠđŠ”‘đŠČ‚đŠżžæŒ—đ§„‰èŒœđĄœș菭đŠČ€đ§“đĄŸ›ćЉćȘ‚đĄžłć©Ąć©±đĄ€…đ€‡Œăœ­ć§ŻđĄœŒă›‡ç†ŽéŽæššđ€Š„ć©źćš«đ€Š“æš«đŁ»čđ§œ¶đ€‘›đ€‹Šç„đ€‰™đš§ĄäŸ°đŠŽšćł‚đ€“Žđ§čđ€ŽœæšŒđ€‰–đĄŒ„ç‚Šç„łđ€©ă¶„æłŸđŻ „đ€©çč„ć§«ćŽŻă·łćœœđ€©đĄŸŸç¶€èŠ"], -["98a1","撅đŁ«șđŁŒ€đ ˆ”ćŸđ Ł•đ ˜™ăż„đĄŸžđȘŠ¶ç€ƒđ©…›ć”°çŽçł“đš©™đ© äżˆçż§ç‹çŒđ§«ŽçŒžçŒčđ„›¶ççˆăș©đ§Ź˜éŹç‡”đ€ŁČçĄè‡¶ă»ŠçœŒă»‘æČąć›œç™çžçŸă»ąă»°ă»Žă»șç““ăŒŽăœ“ç•‚ç•­ç•Čç–ăœŒç—ˆç—œăż€ç™ăż—ç™Žăżœç™șđ€œœç†ˆć˜ŁèŠ€ćĄ©ä€çƒä€čæĄä…ă—›çž˜äȘäŻć±žçžŸçŸ‹ćŁČ砘ç‚č砜䂹ç čçĄ‡çĄ‘çĄŠè‘ˆđ„””ç€łæ ƒç€Č䄃"], -["9940","䄉犑犙蟻皆蟌䅧çȘ‘ä†ČçȘŒè‰čä‡„ç«ç«›ä‡äžĄç­ąç­Źç­»ç°’ç°›ä‰ ä‰șç±»çȜ䊌çČžäŠ”çł­èŸ“çƒ€đ łç·ç·”ç·ç·œçŸźçŸŽçŠŸäŽ—è€ è€„çŹčè€źè€±è”ă·ŒćžŽç‚ è‚·èƒ©ä­è„ŒçŒȘ脎脒畠脔䐁ăŹč腖腙腚"], -["99a1","䐓ć șè…Œè†„ä„è†“ä­è†„ćŸŻè‡è‡€è‰”ä’èŠŠè‰¶è‹Šè‹˜è‹żä’°è—é™©æŠŠè…çƒ”è‘€æƒŁè’ˆä”„è’Ÿè“Ąè“žè”è”žè•’ä”»è•Żè•°è— ä•·è™Č蚒èšČè›Żé™…èž‹ä˜†ä˜—èąźèŁżè€€è„‡èŠ‘đ§„§èš©èšžèȘ”èȘŽè±‘èł”èłČèŽœäž˜ćĄŸè·ƒäŸ­ä»źèžș旘杔èč±ć—”èș°ä ·è»Žè»ąè»€è»­è»ČèŸ·èżèżŠèżŒé€łé§„äą­éŁ éˆ“ä€žéˆšé‰˜é‰«éŠ±éŠźéŠż"], -["9a40","é‹Łé‹«é‹łé‹Žé‹œéƒéŽ„éŽ­ä„…ä„‘éșżé—ćŒéé­éŸä„Ș鑔é‘čé”­é–ąäŠ§é—Žé˜łä§„æž äš€é€äš”éžČéŸ‚ć™”ä«€æƒšéąčäŹ™éŁ±ćĄ„é€Žé€™ć†Žé€œé€·é„‚é„é„ąä­°é§…äźéšŒéŹçȘƒé­©éźéŻéŻ±éŻŽä±­é° ăŻđĄŻ‚é”‰é°ș"], -["9aa1","é»Ÿć™é¶“é¶œé·€é·Œé“¶èŸ¶éč»éșŹéș±éșœé»†é“œé»ąé»±é»žç«ˆéœ„đ ‚”đ Š·đ Ž æ€šé“ƒćŠŹđ “—ćĄ€é“ăžčđ —•đ ˜•đ ™¶đĄšșć—ç…łđ «‚đ «đ źżć‘ȘđŻ »đ Ż‹ć’žđ Ż»đ °»đ ±“đ ±„đ ±Œæƒ§đ Čć™șđ Č”đ łđ ł­đ ”Żđ ¶Čđ ·ˆæ„•é°Żèž„đ ž„đ žŽđ »—đ Ÿđ Œ­đ čłć° đ ŸŒćž‹đĄœđĄđĄ¶æœžđĄ»đĄ‚ˆđĄ‚–ă™‡đĄ‚żđĄƒ“đĄ„ŻđĄ„»ć€è’­đĄ‹ŁđĄ”đĄŒ¶èźđĄ•·đĄ˜™đĄŸƒđĄŸ‡äčžç‚»đĄ ­đĄ„Ș"], -["9b40","𥚭𥩅đĄ°Ș𥱰đĄČŹđĄ»ˆæ‹ƒđĄ»•đĄŒ•ç†˜æĄ•đą…æ§©ă›ˆđą‰Œđą—đąșđąœȘđąĄ±đą„è‹œđą„§đąŠ“đą«•èŠ„đą«šèŸ đąŹŽéžžđąŹżéĄ‡éȘœđౌ"], -["9b62","đąČˆđąČ·đ„ŻšđąŽˆđąŽ’đą¶·đą¶•đąč‚đąœŽđążŒđŁ€łđŁŠđŁŒŸđŁžćŸ±æ™ˆæšżđ§©č𣕧𣗳爁đ€Šș矗𣘚𣜖çș‡đ †ćą”æœŽ"], -["9ba1","怘đŁȘ§đ§™—đ„żąđŁž‘đŁșčđ§—Ÿđą‚šäŁäȘžđ€„™đšȘšđ€‹źđ€Œđ€€»đ€ŒŽđ€Ž–đ€©…đ —Šć‡’đ ˜‘ćПđĄșšăźŸđŁłżđ€„đ€“–ćžˆđ€™ŽăŠ›đ€œŻđš—šđ©§‰ăąđą‡ƒè­žđš­Žé§–đ€ ’đ€Ł»đ€š•çˆ‰đ€«€đ ±žć„„đ€ș„đ€Ÿ†đ čè»šđ„€ŹćŠćœżç…±đ„Š™đ„™đŁœŠđ€Ș§ć–Œđ„‘†đ„‘źđŠ­’é‡”ă‘łđ„”żđ§˜Čđ„•žäœ˜đ„•ąđ„•Šđ„Ÿ‡đ€€żđ„ĄćŠă“»đŁŒæƒžđ„€ƒäŒđš„ˆđ„Șźđ„ź‰đ„°†đĄ¶ćžĄç…‘æŸ¶đŠ„‚đ§°’é–đІČđ€Ÿšè­ąđŠ‚đŠ‘Š"], -["9c40","ć”›đŠŻ·èŒ¶đŠ’„đĄ€œè«Șđ€§¶đŠ’ˆđŁżŻđŠ”’äŻ€đŠ–żđŠš”đąœ›é‘„đ„ŸĄæ†•ćš§đŻŁäŸ»ćščđ€”ĄđŠ›ŒäčȘđ€€Žé™–æ¶đŠČœă˜˜è„·đŠž™đŠĄźđА‘đŠĄžç‡ŸđŠŁ‡ç­‚đ©ƒ€đ š‘đŠ€Šé„„đŠ€č穅鷰đЧșéšŠđŠš­ă™ŸđŠ‘©đ €ĄçŠƒđŠšŽđŠ­›ćŽŹđŁ”™èđŠźä›đŠČ€ç”»èĄ„đŠ¶źćą¶"], -["9ca1","ăœœđą–đ§‹đ§‡ă±”đ§Š€đ§Š…éŠđą…șđ§Š‹éŒ°đ§‹Šđ€§æ°čé’Ÿđ§‘đ »žè §èŁ”đą€Šđš‘łđĄž±æșžđ€šȘ𥠠㊀ăščć°ç§Łä”żæš¶đ©Č­đ©ą€è„ƒđ§ŸŒđ§Ą˜ć›–äƒŸđĄ˜ŠăŠĄđŁœŻđšƒšđĄ…ç†­èŠđ§§đ©†šć©§äČ·đ§‚ŻđšŠ«đ§§œđ§šŠđ§Ź‹đ§”Šđ€…șç­ƒç„Ÿđš€‰æŸ”đȘ‹ŸæšƒđšŒ˜ćŽąđŠž‡éŽżæ ¶éđš…Żđš€ŁđŠŠ”đĄ­đŁˆŻđšˆć¶…đš°°đš‚ƒćœ•é Łđš„‰ć¶«đ€Šˆæ–Ÿæ§•ć’đ€Ș„đŁŸă°‘æœ¶đš‚đšƒŽđš„źđĄŸĄđš…"], -["9d40","𹆉𹆯𹈚𹌆𹌯𹎊㗊𹑹đššȘäŁșæŠđš„–ç ˆé‰•đšŠžäČđš§§äŸđš§šđš­†đšŻ”ć§žđš°‰èŒ‹đšż…đ©ƒŹç­‘đ©„đ©„Œă··đ©…žđ€«ŠèżçŠćš‹đ©“§đ©—©đ©–°đ©–žđ©œČ𩣑𩄉đ©„Șđ©§ƒđ©ššđ©ŹŽđ©”šđ©¶›çșŸđ©»žđ©ŒŁäȀ镇đȘŠ“ç†ąđȘ‹żä¶‘递đȘ—‹ä¶œđ ČœèŸŸć—"], -["9da1","èŸș𱒰èŸčđ€Ș“䔉çčżæœ–æȘ±ä»Șă“€đšŹŹđ§ąăœșèș€đĄŸ”đš€€đš­Źđšź™đ§šŸđŠšŻă·«đ§™•đŁČ·đ„˜”đ„„–äșšđ„șđЉ˜ćšżđ č­èžŽć­­đŁșˆđ€Čžæžæ‹đĄŸ¶đĄĄ»æ”°ć˜­đ„±Šćšđ„Œ‘ă·†đ©¶˜ä±œć˜ąć˜žçœ‰đ„»˜ć„”đŁ”€è°äžœđ żȘ𠔉đٚș脗锞莘瘻鱅癎çžč鍅ćČè…ˆè‹·ć˜„è„Č萘肜ć—Șç„ąć™ƒć–đ șă—Žć˜…ć—±æ›±đš‹ąă˜­ç”Žć—°ć–ș撗ć•Č𠱁đ Č–ć»đ„…ˆđ č¶đą±ą"], -["9e40","đ șąéș«ç”šć—žđĄ”æŠé­ć’”èłç‡¶é…¶æŒæŽčæŸć•©đą­ƒé±Čđąșłć†šă“Ÿđ ¶§ć†§ć‘ć”žć”“ç™Šèž­đŠąŠç–±è‚¶è „èž†èŁ‡è†¶èœđĄƒä“ŹçŒ„đ€œ†ćźèŒ‹đŠą“ć™»đą›Žđ§ŽŻđ€†Łđ§”łđŠ»đ§Š¶é…°đĄ‡™éˆˆđŁłŒđȘš©đ șŹđ »č物đĄČąäŽđ€ż‚đ§żčđ ż«äƒș"], -["9ea1","é±æ”Ÿđą¶ äŁłđ€Ÿ đ©”Œđ żŹđ žŠæąđ§–Łđ ż­"], -["9ead","𩁈𡆇熣çșŽé”äžšäž„ă•·ćŹæČČć§ăšŹă§œćœăš„đ€˜˜ćąšđ€­źèˆ­ć‘‹ćžȘđ„Ș•đ „č"], -["9ec5","ă©’đą‘„çŽđ©șŹäŽ‰éŻ­đŁłŸđ©Œ°ä±›đ€Ÿ©đ©–žđ©żžè‘œđŁ¶¶đ§ŠČđŠžłđŁœ æŒźçŽ„đŁ»·đŁžŹăšȘ逈拌ăčŽă™ș䗩𠒎癀櫰đ ș¶çĄșđ§Œźćą§ä‚żć™Œéź‹ć”Žç™”đȘŽéș…䳥ç—čăŸ»æ„™đŁƒšđ€Č"], -["9ef5","ć™đĄŠ©ćž§đ€„Łđ©ž†ćˆŽđ§‚źă–­æ±Šé”Œ"], -["9f40","籖éŹčćŸžđĄŹć±“æ““đ©“đŠŒ”đ§…€èš­đ ŽšđŠŽąđ€«ąđ ”±"], -["9f4f","ć‡ŸđĄŒć¶ŽéœƒđĄ·‘éșéŒçŹŸéŹ‚ćł‘çźŁæ‰šæŒ”é«żçŻéŹȘç±ŸéŹźç±‚çČ†é°•çŻŒéŹ‰éŒ—é°›đ€€Ÿéœšć•łćŻƒäżœéș˜äżČć‰ ăž†ć‹‘ć§ć–ćŠ·ćž’éŸˆé¶«èœœć‘©éžŽé„€éžșćŒŹæ„°"], -["9fa1","æ€Źćšé°ŠéŽ‚ä°»é™æŠ€ć‚Šç•†đĄ­é§šć‰ł"], -["9fae","酙隁酜"], -["9fb2","酑đšș—æżđŠŽŁæ«Šć˜‘é†Žç•șæŠ…đ Œçç±°đ„°ĄđŁłœ"], -["9fc1","đ€€™ç›–éźäžȘđ ł”èŽŸèĄ‚"], -["9fc9","ć±Šæ§€ćƒ­ćșćˆŸć·”ä»Žæ°±đ ‡ČäŒčć’œć“šćŠšè¶‚ă—ŸćŒŒă—ł"], -["9fdb","æ­’é…ŒéŸ„éź—é źéąŽéȘșéșšéș„ç…ș笔"], -["9fe7","æŻș蠘眞"], -["9feb","映đȘ™Šèč·éœ“"], -["9ff0","跔èčéžœèžæŠ‚đšœèžšèč”ç«“đ€©·çšŸçŁ˜æłȘ詧瘇"], -["a040","đš©šéŒŠæłŽèŸ–ç—ƒđȘŠČçĄ“đŻĄ€èŽŒç‹ąç±èŹ­çŒ‚ç“±èł«đ€Ș»è˜ŻćŸșèą ä’·"], -["a055","đĄ »đŠž…"], -["a058","è©Ÿđą”›"], -["a05b","æƒœç™§é«—é”„éźéźèŸ”"], -["a063","è èł·çŒŹéœĄéź°ă—–çŠČä°‡ç±‘é„ŠđŠ…™æ…™ä°„éș–æ…œ"], -["a073","ćŸæ…ŻæŠŠæˆčæ‹Žă©œæ‡ąćŽȘđŁ”æ€æ ‚ă—’"], -["a0a1","ć”—đšŻ‚èżšđšžč"], -["a0a6","ćƒ™đĄ”†ç€†ćŒČé˜žđ Œ»ä„"], -["a0ae","矟"], -["a0b0","çł‚đ„Œšçłšçš­èŠèŁç”ç”…ç“ČèŠ”èˆšæœŒèąđ§’†è›ç“°è„ƒçœ€èŠ‰đŠŸŒç•“đŠ»‘èž©èŸŽè‡ˆèžŒè©‰èČ­è­ƒçœ«ç“žè“šă˜”æŠČè¶Š"], -["a0d4","芩瑚æ¶čèŸđ€€‘ç“§ă·›ç…¶æ‚€æ†œăł‘ç…ąæ·"], -["a0e2","çœ±đšŹ­ç‰æƒ©ä­Ÿćˆ ă°˜đŁł‡đ„»—đ§™–đ„”±đĄ„„đĄ‹Ÿđ©€ƒđŠ·œđ§‚­ćłđŠ†­đššđŁ™·đ ƒźđŠĄ†đ€ŒŽä•ąćŹŸđŠŒéœéșŠđЉ«"], -["a3c0","␀",31,"␥"], -["c6a1","①",9,"⑮",9,"ⅰ",9,"äž¶äžżäș…äș ć†‚憖憫ć‹čćŒžć©ćŽ¶ć€Šćź€ć·›âŒłćčżć»ŽćœćœĄæ”Žæ— ç–’ç™¶èŸ”éš¶ÂšË†ăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒïŒ»ïŒœâœœă",23], -["c740","す",58,"ゥスィむ"], -["c7a1","ă‚„",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↾â†č㇏𠃌äčšđ ‚Šćˆ‚ä’‘"], -["c8a1","éŸ°ć†ˆéŸ±đ§˜‡"], -["c8cd","ïżąïż€ïŒ‡ïŒ‚ăˆ±â„–â„Ąă‚›ă‚œâș€âș„âș†âș‡âșˆâșŠâșŒâșâș•âșœâșâș„âș§âșȘâșŹâșźâș¶âșŒâșŸâ»†â»Šâ»Œâ»â»â»–⻗⻞⻣"], -["c8f5","ÊƒÉÉ›É”É”Ć“ĂžĆ‹ÊŠÉȘ"], -["f9fe","ïż­"], -["fa40","đ •‡é‹›đ —ŸđŁż…è•ŒäŠ”çŻć†”ă™‰đ€„‚đš§€é„đĄ§›è‹źđŁłˆç Œæ„æ‹Ÿđ€€łđšŠȘđ Š đŠźłđĄŒ…äŸ«đą“­ć€ˆđŠŽ©đ§Ș„đ٘€đ€Ș±đą”“ć€©đ ŸćŸ€đ Ž€đ ‡æ»›đ Ÿćœć„ă‘șć„ŽéĄŹăƒè–đ€Š€đ ’‡ć… đŁŽŽć…Șđ ŻżđąƒŒđ ‹„đą”°đ –ŽđŁˆłđĄŠƒćź‚èœđ –łđŁČ™ć†Č憾"], -["faa1","鮮應懏懑㳜懓đ€ȘŠć†łć‡ąć‚ć‡­èæ€Ÿđٜ­ćœ»ćˆ‹ćˆŠćˆŒćŠ”扗抔ćŠčć‹…ç°•è•‚ć‹ è˜đŠŹ“ćŒ…đš«žć•‰æ»™đŁŸ€đ „”đŁżŹćŒłć„đ Żąæł‹đĄœŠæ ›ç•æŠășȘăŁŒđĄ›šç‡ä’ąć­ćŽđšš«ćŸćżđĄ––đĄ˜“çŸŠćŽ“đšȘ›ćŽ ćŽ«ćŽźçŽ§đ„Čăœ™çŽœćć…æ±‰äč‰ćŸŸć™ăȘ«đ źć đŁż«đą¶Łć¶đ ±·ć“çčć”«æ™—æ”›ć‘­đŠ­“đ ”Žć•ć’ć’€äžŠđĄœđ »ă¶Žđ ”"], -["fb40","đšŠŒđąš˜ć•‡äł­ćŻç—ć–†ć–©ć˜…đĄŁ—đ€€șä•’đ€”æšłđĄ‚Žć˜·æ›đŁŠŠæš€æš­ć™ć™çŁ±ć›±éž‡ćŸćœ€ć›Żć›­đš­Šă˜ŁđĄ‰ć†đ€†„æ±źç‚‹ć‚ăš±đŠ±ŸćŸŠđĄ–ć ƒđĄ‘”đ€Łć Šđ€Ż”ćĄœćąȘă•ĄćŁ ćŁœđĄˆŒćŁ»ćŻżćƒđȘ…đ€‰žé“ă–Ąć€ŸæąŠă›ƒæč™"], -["fba1","đĄ˜Ÿćš€ć•“đĄš’è”…ć§‰đ ”ŽđŠČđŠŽȘđĄŸœć§™đĄŸ»đĄžČđŠ¶Šæ”±đĄ šđĄ›•ć§čđŠč…ćȘ«ć©Łă›Šđ€Š©ć©·ăœˆćȘ–ç‘„ć«“đŠŸĄđą•”ă¶…đĄ€‘ăœČ𡚾ćșƒć‹ć­¶æ–ˆć­Œđ§šŽä€„äĄđ ˆ„ćŻ•æ… đĄšŽđ„§Œđ –„ćŻłćźäŽć°…đĄ­„ć°“çŽć°”đĄČ„đŠŹšć±‰äŁćȅ泩泯涋đĄ·čđĄž·ćŽćŽ˜ć”†đĄș€ćČșć·—è‹Œă ­đ€€đą‰đą…łèŠ‡ă ¶ăŻ‚ćžźæȘŠćč”ćčșđ€’Œđ ł“ćŽŠäș·ć»ćŽšđĄ±ćž‰ć»Žđš’‚"], -["fc40","ć»čć»»ăą ć»Œæ Ÿé›ćŒđ ‡đŻą”ă«žäąźđĄŒșćŒșđŠąˆđąćœ˜đą‘±ćœŁéžœđŠčźćœČé€đšš¶ćŸ§ć¶¶ă”Ÿđ„‰đĄœȘđ§ƒžđą™šé‡–đ Šžđšš©æ€±æš…đĄĄ·ă„Łă·‡ă˜č析𹞎焱ă耿‚žæ‚€æ‚łđ€Š‚đ€Šđ§©“ç’€ćƒĄćȘ æ…€è€æ…‚đŻąŠđŠ»’æ†ć‡Žđ ™–æ†‡ćźȘđŁŸ·"], -["fca1","đąĄŸæ‡“đšźđ©„æ‡ă€ČđąŠ€đąŁæ€Łæ…œæ”žæŽ‹đ „˜æ‹…đĄ°æ‹•đąžæŹđ€§Ÿăš—æžæžđĄŽŽđĄŸŒæ’æŸŠđąž¶é ”đ€‚Œđ„œæ“Ąæ“„é‘»ă©Šæșă©—æ•æŒ–đ€ššđ€šŁæ–…æ•­æ•ŸđŁŸæ–”đ€„€äŹ·æ—‘äƒ˜đĄ ©æ— æ—ŁćżŸđŁ€æ˜˜đŁ‡·đŁ‡žæ™„đŁ†€đŁ†„æ™‹đ č”æ™§đ„‡Šæ™łæ™ŽđĄžœđŁˆ±đš—ŽđŁ‡ˆđ„Œ“çŸ…đąŁ·éŠ€æœ‚đ€Žœđ€šĄăŹ«æ§șđŁŸ‚æžæ§æąđ€‡đ©ƒ­æŸ—ä“©æ ąæčéˆŒæ đŁŠđж æĄ"], -["fd40","đŁ‘Żæ§Ąæš‹đš«Ÿæ„łæŁƒđŁ—æ€æ€€ăŽČăšđŁ˜Œăź€æžŹæ„Ąđš©Šä‹Œæ€¶æŠ˜ăźĄđ ‰èŁć‚æ§č𣙙đą„Șæ©…đŁœƒæȘăŻłæž±æ«ˆđ©†œă°æŹđ €ŁæƒžæŹ”æ­ŽđąŸæș”đŁ«›đ Ž”đĄ„˜ă€ćĄđŁ­šæŻĄđŁ»ŒæŻœæ°·đą’‹đ€Ł±đŠ­‘æ±šèˆŠæ±čđŁ¶Œä“…đŁ¶œđ€†€đ€€Œđ€€€"], -["fda1","𣳉㛄㳫đ ŽČ韃đهčđą’‘çŸæ ·đŠŽ„đŠ¶ĄđŠ·«æ¶–æ”œæčŒæŒ„đ€„żđ€‚…đŠčČè”łđŠœŽć‡‡æČœæžèźđšŹĄæžŻđŁžŻç‘“đŁŸ‚ç§ŒæčćȘ‘đف‹æżžăœæŸđŁž°æ»șđĄ’—đ€€œä••é°æœ„æœœă”ŽæœŽđ©…°ăŽ»æŸŸđ€…„æż“đ€‚‘đ€…•đ€€čđŁż°đŁŸŽđ€„żć‡Ÿđ€…–đ€…—đ€…€đŠ‡ç‹çŸç‚§ç‚çƒŒçƒ•çƒ–çƒŸä„„ă·šç†Žç†–đ€‰·ç„«ç……ćȘˆç…Šç…źćČœđ€„ç…éąđ€‹ç„Źđ€‘šđ€š§đ€šąç†șđšŻšç‚œçˆŽ"], -["fe40","é‘‚çˆ•ć€‘é‘ƒçˆ€éđ„˜…çˆźç‰€đ€„Žæąœç‰•ç‰—ăč•đف„栍挜犂çŒȘçŒ«đ€ Łđš «äŁ­đš „çŒšçŒźççŽȘđ °șđŠšźç‰ç‘‰đ€‡ąđĄ›§đ€š€æ˜Łă›…đ€Š·đ€Šđ€§»ç·ç•æ€ƒđ€šŠçčđ —ƒă»—ç‘œđąą­ç‘ đšșČ瑇珀瑶èŽčç‘Źăœ°ç‘Žé±æšŹç’‚ä„“đ€ȘŒ"], -["fea1","đ€…Ÿđ€©čđšźć­†đš°ƒđĄąžç“ˆđĄŠˆç”Žç“©ç”žđš»™đĄ©‹ćŻ—đšșŹéŽ…ç•ç•Šç•§ç•źđ€Ÿ‚ăŒ„đ€Ž“ç–Žç‘ç–žç–Žç˜‚ç˜Źç™‘ç™ç™Żç™¶đŠ”çšè‡ŻăŸžđŠ€‘đŠ€ŽçšĄçš„çš·ç›ŒđŠŸŸè‘ąđ„‚đ„…œđĄžœçœžçœŠç€æ’Żđ„ˆ ç˜đŁŠŹçžŻđš„€đš„šđĄ›çŸŽç ‰đĄ¶đ€š’æŁŠçąŻçŁ‡çŁ“éš„ç€źđ„— çŁ—ç€Žçą±đ§˜ŒèŸžèą„đšŹ«đŠ‚ƒđą˜œçŠ†è€€æ€‚çŠ€đ„Ą—çŠđ§Źč瀌犩æžȘ𧄩ășšç§†đ©„ç§”"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json deleted file mode 100644 index 49ddb9a..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json +++ /dev/null @@ -1,264 +0,0 @@ -[ -["0","\u0000",127,"€"], -["8140","äž‚äž„äž…äž†äžäž’äž—äžŸäž äžĄäžŁäžŠäž©äžźäžŻäž±äžłäž”äž·äžŒäč€äčäč‚äč„äč†äčŠäč‘äč•äč—äčšäč›äčąäčŁäč€äč„äč§äčšäčȘ",5,"äčČäčŽ",9,"äčż",6,"äș‡äșŠ"], -["8180","äșäș–äș—äș™äșœäșäșžäșŁäșȘäșŻäș°äș±äșŽäș¶äș·äșžäșčäșŒäșœäșŸä»ˆä»Œä»ä»ä»’ä»šä»›ä»œä» ä»ąä»Šä»§ä»©ä»­ä»źä»Żä»±ä»Žä»žä»čä»ș仌仟䌀䌂",6,"䌋䌌䌒",4,"äŒœäŒäŒĄäŒŁäŒšäŒ©äŒŹäŒ­äŒźäŒ±äŒłäŒ”äŒ·äŒč䌻䌟",4,"䜄䜅䜇",5,"äœ’äœ”äœ–äœĄäœąäœŠäœšäœȘäœ«äœ­äœźäœ±äœČ䜔䜷䜞äœčäœșäœœäŸ€äŸäŸ‚äŸ…äŸ†äŸ‡äŸŠäŸŒäŸŽäŸäŸ’äŸ“äŸ•äŸ–äŸ˜äŸ™äŸšäŸœäŸžäŸŸäŸĄäŸą"], -["8240","䟀䟫䟭䟰",4,"䟶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俹俀俄俧俫俏俰äżČ俎俔俶俷äżčäż»äżŒäżœäżż",11], -["8280","ć€‹ć€Žć€ć€‘ć€“ć€•ć€–ć€—ć€›ć€ć€žć€ ć€ąć€Łć€€ć€§ć€«ć€Ż",10,"ć€»ć€œć€żć€ćć‚ć„ć…ć†ć‰ćŠć‹ćć",4,"恖恗恘恙恛恝",7,"恊",5,"恭",8,"恞ćčćșćŒćœć‚ć‚‚ć‚ƒć‚„ć‚†ć‚‡ć‚‰ć‚Šć‚‹ć‚Œć‚Ž",20,"悀悊ć‚Șć‚«ć‚­",4,"悳",6,"ć‚Œ"], -["8340","ć‚œ",17,"惐",5,"惗惘惙惛",10,"惚惩ćƒȘ惫惯惰惱ćƒČ惎惶",4,"ćƒŒ",9,"愈"], -["8380","愉愊愌",5,"愓",13,"愱",28,"慂慇慊慌慎慏慐慒慓慗慘慙慛慝",4,"慣慀慊慧慩ć…Ș慯ć…Čć…șć…Ÿć…żć†ƒć†„ć††ć†‡ć†Šć†‹ć†Žć†ć†ć†‘ć†“ć†”ć†˜ć†šć†ć†žć†Ÿć†Ąć†Łć†Š",4,"憭憼憮憾ć†čć†șć†Ÿć†żć‡ć‡‚ć‡ƒć‡…ć‡ˆć‡Šć‡ć‡Žć‡ć‡’",5], -["8440","ć‡˜ć‡™ć‡šć‡œć‡žć‡Ÿć‡ąć‡Łć‡„",5,"懏懟懱ć‡Čć‡Žć‡·ć‡Ÿćˆ„ćˆ…ćˆ‰ćˆ‹ćˆŒćˆćˆćˆ“ćˆ”ćˆ•ćˆœćˆžćˆŸćˆĄćˆąćˆŁćˆ„ćˆŠćˆ§ćˆȘ戏戯戱ćˆČćˆŽćˆ”ćˆŒćˆŸć‰„",5,"手扎扏扒打払扗托"], -["8480","ć‰™ć‰šć‰›ć‰ć‰Ÿć‰ ć‰ąć‰Łć‰€ć‰Šć‰šć‰«ć‰Źć‰­ć‰źć‰°ć‰±ć‰ł",9,"ć‰ŸćŠ€ćŠƒ",4,"抉",6,"抑抒抔",6,"ćŠœćŠ€ćŠ„ćŠŠćŠ§ćŠźćŠŻćŠ°ćŠŽ",9,"拀拁拂拄担拆拈拊拌拍拎拏拑拓拔拕拗拙",5,"拠拥拹拣拄",10,"拱",7,"ć‹»ć‹Œć‹œćŒćŒ‚ćŒƒćŒ„ćŒ‡ćŒ‰ćŒŠćŒ‹ćŒŒćŒŽ"], -["8540","ćŒ‘ćŒ’ćŒ“ćŒ”ćŒ˜ćŒ›ćŒœćŒžćŒŸćŒąćŒ€ćŒ„ćŒ§ćŒšćŒ©ćŒ«ćŒŹćŒ­ćŒŻ",9,"ćŒŒćŒœć€ć‚ć„ć†ć‹ćŒććć”ć˜ć™ć›ćć„ćšćȘ捬捭ćČć¶ćčć»ćŒćœćŸćŽ€ćŽćŽƒćŽ‡ćŽˆćŽŠćŽŽćŽ"], -["8580","掐",4,"ćŽ–ćŽ—ćŽ™ćŽ›ćŽœćŽžćŽ ćŽĄćŽ€ćŽ§ćŽȘ掫掏掭掯",6,"掷掞ćŽčćŽșćŽŒćŽœćŽŸć€ćƒ",4,"揎描提插揓揕揚揜揝揞握揱揧揮ćșćŸćżć€ć‚ć…ć‡ć‹ć”ć˜ć™ćšćœćąć€ć„ćȘ搰搳搶搷ćșćœćżć‘ć‘‚ć‘„ć‘…ć‘‡ć‘‰ć‘Œć‘ć‘Žć‘ć‘‘ć‘šć‘",4,"摣摄摧摩",7,"摮ć‘čć‘șć‘Ÿć‘żć’ć’ƒć’…ć’‡ć’ˆć’‰ć’Šć’ć’‘ć’“ć’—ć’˜ć’œć’žć’Ÿć’ ć’Ą"], -["8640","ć’ąć’„ć’źć’°ć’Č撔撶撷ć’čć’șć’Œć’Ÿć“ƒć“…ć“Šć“‹ć“–ć“˜ć“›ć“ ",4,"擫擏擯擰擱擎",5,"ć“»ć“Ÿć”€ć”‚ć”ƒć”„ć”…ć”ˆć”Š",4,"攒攓攕",5,"ć”œć”ć”žć”Ÿć”Ąć”„ć”Š"], -["8680","攚攩攫攭ć”Č攎攔收攞ć”čć”șć”»ć”œć•€ć•‚ć•…ć•‡ć•ˆć•‹",4,"救敒敓敔敗",4,"ć•ć•žć•Ÿć• ć•ąć•Łć•šć•©ć•«ć•Ż",5,"ć•čć•șć•œć•żć–…ć–†ć–Œć–ć–Žć–ć–’ć–“ć–•ć––ć–—ć–šć–›ć–žć– ",6,"方",8,"ć–Čć–Žć–¶ć–žć–șć–Œć–ż",4,"旆旇旈旊旋旎族旐旕旗",4,"旞无旹旧早旭旟旰旱旎时旞",4,"旿昂昃昄昅"], -["8740","昆昇昊昋昍昐",7,"ć˜™ć˜šć˜œć˜ć˜ ć˜Ąć˜ąć˜„ć˜Šć˜šć˜©ć˜Ș昫星是昰昳昔昷昞ć˜șć˜Œć˜œć˜Ÿć™€",11,"晏",4,"晕晖晚晛晝",4], -["8780","晣晄晊晧晭晟景晰ć™Č晳晎晔晷晞ć™čć™șć™œ",7,"暇",6,"暐暑暒暔",14,"㚀",10,"㚰",6,"暾ćščćšșćš»ćšœ",12,"曋",8,"ć›•ć›–ć›˜ć›™ć›œć›Łć›„",5,"曬曼曯ć›Čć›łć›¶ć›·ć›žć›»ć›Œćœ€ćœćœ‚ćœ…ćœ‡ćœ‹",6], -["8840","朒",9,"ćœćœžćœ ćœĄćœąćœ€ćœ„ćœŠćœ§ćœ«ćœ±ćœČ朮",4,"ćœŒćœœćœżććƒć„ć…ć†ćˆć‰ć‹ć’",4,"ć˜ć™ćąćŁć„ć§ćŹćźć°ć±ćČćŽć”ćžćčćșćœćŸćżćž€"], -["8880","极枇枈枉枊枍",4,"枔",6,"ćžœćžćžžćžŸćž„ćžšćžȘ枏枯枰枱枳枔架枷ćžč",8,"柄",6,"ćŸŒćŸćŸćŸ‘ćŸ“ćŸ–ćŸ—ćŸ›ćŸœćŸžćŸĄćŸąćŸŁćŸ„",7,"ćŸźćŸ°ćŸ±ćŸČćŸłćŸ”ćŸ¶ćŸ·ćŸ»ćŸŒćŸŸćŸżć ć ƒć „ć …ć ˆć ‰ć Šć Œć Žć ć ć ’ć “ć ”ć –ć —ć ˜ć šć ›ć œć ć Ÿć ąć Łć „",4,"ć «",4,"ć ±ć Čć łć Žć ¶",7], -["8940","ć Ÿ",5,"桅",6,"桎桏桐桒桓桕桖桗桙",4,"桟",5,"楊",4,"業",16,"桿求汄汆汇汈汊汋汌"], -["8980","汍",4,"汔",4,"汛汜汝池",7,"ćąȘ",17,"ćąœćąŸćążćŁ€ćŁ‚ćŁƒćŁ„ćŁ†",10,"棒棓棔棖",13,"棄",5,"棭棯棱ćŁČ棎棔棷棞ćŁș",7,"ć€ƒć€…ć€†ć€ˆ",4,"ć€Žć€ć€‘ć€’ć€“ć€—ć€˜ć€›ć€ć€žć€ ć€Ąć€ąć€Łć€Šć€šć€Źć€°ć€Č怳怔怶总"], -["8a40","ć€œć€Ÿć€żć„€ć„ƒć„…ć„†ć„Šć„Œć„ć„ć„’ć„“ć„™ć„›",4,"愥愣愀愊",12,"愔愷ć„șć„»ć„Œć„Ÿć„żćŠ€ćŠ…ćŠ‰ćŠ‹ćŠŒćŠŽćŠćŠćŠ‘ćŠ”ćŠ•ćŠ˜ćŠšćŠ›ćŠœćŠćŠŸćŠ ćŠĄćŠąćŠŠ"], -["8a80","抧抏抭抰抱抳",5,"ćŠșćŠŒćŠœćŠż",6,"槇槈槉槌槍槎槏槕槖槙槛槞",4,"槀槊槧槩ć§Șć§«ć§­",11,"ć§șć§Œć§œć§Ÿćš€ćš‚ćšŠćš‹ćšćšŽćšćšćš’ćš”ćš•ćš–ćš—ćš™ćššćš›ćšćšžćšĄćšąćš€ćšŠćš§ćššćšȘ",6,"暳暔暷",4,"ćšœćšŸćšżć©",4,"ć©‡ć©ˆć©‹",9,"ć©–ć©—ć©˜ć©™ć©›",5], -["8b40","橥橣橀橄橊橚橩橫",8,"橞ć©čć©»ć©Œć©œć©ŸćȘ€",17,"ćȘ“",6,"ćȘœ",13,"ćȘ«ćȘŹ"], -["8b80","ćȘ­",4,"ćȘŽćȘ¶ćȘ·ćȘč",4,"ćȘżć«€ć«ƒ",5,"ć«Šć«‹ć«",4,"ć«“ć«•ć«—ć«™ć«šć«›ć«ć«žć«Ÿć«ąć«€ć«„ć«§ć«šć«Ș櫏",4,"ć«Č",22,"權",11,"揘",25,"揳揔揶揞",7,"歁",6], -["8c40","歈",7,"ć­’ć­–ć­žć­ ć­Ąć­§ć­šć­«ć­­ć­źć­Żć­Čć­Žć­¶ć­·ć­žć­čć­»ć­Œć­Ÿć­żćź‚ćź†ćźŠćźćźŽćźćź‘ćź’ćź”ćź–ćźŸćź§ćźšćź©ćźŹćź­ćźźćźŻćź±ćźČćź·ćźșćź»ćźŒćŻ€ćŻćŻƒćŻˆćŻ‰ćŻŠćŻ‹ćŻćŻŽćŻ"], -["8c80","毑比",8,"毠毹毣毊毧毩",4,"毯毱",6,"ćŻœćŻŸć°€ć°‚ć°ƒć°…ć°‡ć°ˆć°‹ć°Œć°ć°Žć°ć°’ć°“ć°—ć°™ć°›ć°žć°Ÿć° ć°Ąć°Łć°Šć°šć°©ć°Șć°«ć°­ć°źć°Żć°°ć°Čć°łć°”ć°¶ć°·ć±ƒć±„ć±†ć±‡ć±Œć±ć±’ć±“ć±”ć±–ć±—ć±˜ć±šć±›ć±œć±ć±Ÿć±ąć±€ć±§",6,"ć±°ć±Č",6,"ć±»ć±Œć±œć±ŸćȀćȃ",4,"ćȉćȊćȋćȎćȏćȒćȓćȕćȝ",4,"ćČ€",4], -["8d40","ćČȘćČźćČŻćȰćČČćČŽćȶćČčćČșćČ»ćČŒćČŸćł€ćł‚ćłƒćł…",5,"泌",5,"泓",5,"泚",6,"泹泣泧泩泫泏泟泯泱",9,"ćłŒ",4], -["8d80","殁殄殅殈",5,"殏",4,"殕殗殘殙殚殜殝殟",4,"掄掚ćŽȘ掫掏掯",4,"掔",7,"掿",7,"ć”ˆć”‰ć”",10,"ć”™ć”šć”œć”ž",10,"ć”Ș攭攟攰攱ć”Č攳攔",12,"涃",21,"ć¶šć¶›ć¶œć¶žć¶Ÿć¶ "], -["8e40","ć¶Ą",21,"ć¶ž",12,"ć·†",6,"ć·Ž",12,"ć·œć·Ÿć· ć·Łć·€ć·Șć·Źć·­"], -["8e80","淰淔淶淞",4,"ć·żćž€ćž„ćž‡ćž‰ćžŠćž‹ćžćžŽćž’ćž“ćž—ćžž",7,"ćžš",4,"枯枰ćžČ",4,"ćžčćžșćžŸćžżćč€ćčćčƒćč†",5,"ćč",6,"ćč–",4,"ćčœćčćčŸćč ćčŁ",14,"ćč”ćč·ćččćčŸćșćș‚ćșƒćș…ćșˆćș‰ćșŒćșćșŽćș’ćș˜ćș›ćșćșĄćșąćșŁćș€ćșš",4,"ćșź",4,"ćșŽćșșćș»ćșŒćșœćșż",6], -["8f40","ć»†ć»‡ć»ˆć»‹",5,"ć»”ć»•ć»—ć»˜ć»™ć»šć»œ",11,"滩滫",8,"滔滞ć»čć»»ć»Œć»œćŒ…ćŒ†ćŒ‡ćŒ‰ćŒŒćŒćŒŽćŒćŒ’ćŒ”ćŒ–ćŒ™ćŒšćŒœćŒćŒžćŒĄćŒąćŒŁćŒ€"], -["8f80","ćŒšćŒ«ćŒŹćŒźćŒ°ćŒČ",6,"ćŒ»ćŒœćŒŸćŒżćœ",14,"ćœ‘ćœ”ćœ™ćœšćœ›ćœœćœžćœŸćœ ćœŁćœ„ćœ§ćœšćœ«ćœźćœŻćœČćœŽćœ”ćœ¶ćœžćœșćœœćœŸćœżćŸƒćŸ†ćŸćŸŽćŸćŸ‘ćŸ“ćŸ”ćŸ–ćŸšćŸ›ćŸćŸžćŸŸćŸ ćŸą",5,"ćŸ©ćŸ«ćŸŹćŸŻ",5,"ćŸ¶ćŸžćŸčćŸșćŸ»ćŸŸ",4,"ćż‡ćżˆćżŠćż‹ćżŽćż“ćż”ćż•ćżšćż›ćżœćżžćżŸćżąćżŁćż„ćżŠćżšćż©ćżŹćżŻćż°ćżČ濳濎濶濷ćżčćżșćżŒæ€‡"], -["9040","æ€ˆæ€‰æ€‹æ€Œæ€æ€‘æ€“æ€—æ€˜æ€šæ€žæ€Ÿæ€ąæ€Łæ€€æ€Źæ€­æ€źæ€°",4,"怶",4,"怜怟恀恄",6,"æŒæŽææ‘æ“æ”æ–æ—æ˜æ›æœæžæŸæ æĄæ„æŠæźæ±æČ恎恔恷恟悀"], -["9080","æ‚æ‚‚æ‚…æ‚†æ‚‡æ‚ˆæ‚Šæ‚‹æ‚Žæ‚æ‚æ‚‘æ‚“æ‚•æ‚—æ‚˜æ‚™æ‚œæ‚žæ‚Ąæ‚ąæ‚€æ‚„æ‚§æ‚©æ‚Șæ‚źæ‚°æ‚łæ‚”æ‚¶æ‚·æ‚čæ‚ș悜",7,"惇惈惉惌",4,"æƒ’æƒ“æƒ”æƒ–æƒ—æƒ™æƒ›æƒžæƒĄ",4,"æƒȘ惱æƒČ惔惷惞惻",4,"愂愃愄愅愇愊愋愌愐",4,"æ„–æ„—æ„˜æ„™æ„›æ„œæ„æ„žæ„Ąæ„ąæ„„æ„šæ„©æ„Șæ„Ź",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"æ…žæ…Ÿæ… æ…Ąæ…Łæ…€æ…„æ…Šæ…©",6,"慱æ…Čæ…łæ…Žæ…¶æ…ž",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"æ†Ș憫憭",9,"憞",5,"æ†żæ‡€æ‡æ‡ƒ",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"æˆ‡æˆ‰æˆ“æˆ”æˆ™æˆœæˆæˆžæˆ æˆŁæˆŠæˆ§æˆšæˆ©æˆ«æˆ­æˆŻæˆ°æˆ±æˆČ戔戶戞",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"所扄扚扱æ‰Č扎扔扷扞æ‰ș扻扜抁抂抃抅抆抇抈抋",5,"æŠ”æŠ™æŠœæŠæŠžæŠŁæŠŠæŠ§æŠ©æŠȘæŠ­æŠźæŠŻæŠ°æŠČæŠłæŠŽæŠ¶æŠ·æŠžæŠș抟拀拁"], -["9280","æ‹ƒæ‹‹æ‹æ‹‘æ‹•æ‹æ‹žæ‹ æ‹Ąæ‹€æ‹Ș拫拰æ‹Č拔拞æ‹čæ‹șæ‹»æŒ€æŒƒæŒ„æŒ…æŒ†æŒŠæŒ‹æŒŒæŒæŒæŒæŒ’æŒ“æŒ”æŒ•æŒ—æŒ˜æŒ™æŒœæŒŠæŒ§æŒ©æŒŹæŒ­æŒźæŒ°æŒ±æŒł",5,"æŒ»æŒŒæŒŸæŒżæ€ææ„æ‡æˆæŠæ‘æ’æ“æ”æ–",7,"捠捀捄捊捚æȘæ«æŹæŻæ°æČæłæŽæ”æžæčæŒæœæŸæżæŽæŽƒæŽ„æŽ…æŽ†æŽ‹æŽæŽ‘æŽ“æŽ”æŽ•æŽ—æŽ™",6,"æŽĄæŽ€æŽŠæŽ«æŽŻæŽ±æŽČ掔掶æŽčæŽ»æŽœæŽżæ€"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"æŸæąæ€",4,"æ«æŹæźæŻæ°æ±æłæ”æ·æčæș揻揌揟搃搄搆",4,"損搎搑搒搕",5,"ææŸæąæŁæ€"], -["9380","æ„æ§æšæ©æ«æź",5,"搔",4,"搻搌搟摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摚æ‘Șæ‘«æ‘Źæ‘ź",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"æ’„æ’Šæ’§æ’šæ’Șæ’«æ’Żæ’±æ’Čæ’łæ’Žæ’¶æ’čæ’»æ’œæ’Ÿæ’żæ“æ“ƒæ“„擆",6,"擏擑擓擔擕擖擙據"], -["9440","æ“›æ“œæ“æ“Ÿæ“ æ“Ąæ“Łæ“„æ“§",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","æ”ąæ”Łæ”€æ”Š",4,"æ”Źæ”­æ”°æ”±æ”Čæ”łæ”·æ”ș攌攜敀",4,"æ•†æ•‡æ•Šæ•‹æ•æ•Žæ•æ•’æ•“æ•”æ•—æ•˜æ•šæ•œæ•Ÿæ• æ•Ąæ•€æ•„æ•§æ•šæ•©æ•Șæ•­æ•źæ•Żæ•±æ•łæ•”æ•¶æ•ž",14,"æ–ˆæ–‰æ–Šæ–æ–Žæ–æ–’æ–”æ–•æ––æ–˜æ–šæ–æ–žæ– æ–ąæ–Łæ–Šæ–šæ–Șæ–Źæ–źæ–±",7,"æ–șæ–»æ–Ÿæ–żæ—€æ—‚æ—‡æ—ˆæ—‰æ—Šæ—æ—æ—‘æ—“æ—”æ—•æ—˜",7,"æ—Ąæ—Łæ—€æ—Ș旫"], -["9540","æ—Čæ—łæ—Žæ—”æ—žæ—č旻",4,"æ˜æ˜„æ˜…æ˜‡æ˜ˆæ˜‰æ˜‹æ˜æ˜æ˜‘æ˜’æ˜–æ˜—æ˜˜æ˜šæ˜›æ˜œæ˜žæ˜Ąæ˜ąæ˜Łæ˜€æ˜Šæ˜©æ˜Șæ˜«æ˜Źæ˜źæ˜°æ˜Čæ˜łæ˜·",4,"æ˜œæ˜żæ™€æ™‚æ™„",6,"晍晎晐晑晘"], -["9580","æ™™æ™›æ™œæ™æ™žæ™ æ™ąæ™Łæ™„æ™§æ™©",4,"晱æ™Čæ™łæ™”æ™žæ™čæ™»æ™Œæ™œæ™żæš€æšæšƒæš…æš†æšˆæš‰æšŠæš‹æšæšŽæšæšæš’æš“æš”æš•æš˜",4,"暞",8,"暩",4,"æšŻ",4,"暔暶暷暞æšșæš»æšŒæšœæšż",25,"曚曞",7,"曧曚æ›Ș",5,"曱曔曶曞æ›ș曻曜朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"æœ§æœ©æœźæœ°æœČæœłæœ¶æœ·æœžæœčæœ»æœŒæœŸæœżææ„æ…æ‡æŠæ‹ææ’æ”æ•æ—",4,"ææąæŁæ€æŠæ§æ«æŹæźæ±æŽæ¶"], -["9680","杞æčæșæ»æœæž€æž‚æžƒæž…æž†æžˆæžŠæžŒæžæžŽæžæž‘æž’æž“æž”æž–æž™æž›æžŸæž æžĄæž€æžŠæž©æžŹæžźæž±æžČ枎æžč",7,"柂柅",9,"æŸ•æŸ–æŸ—æŸ›æŸŸæŸĄæŸŁæŸ€æŸŠæŸ§æŸšæŸȘæŸ«æŸ­æŸźæŸČ柔",7,"柟栁栂栃栄栆栍栐栒栔栕栘",4,"æ žæ Ÿæ  æ ą",6,"æ «",6,"栎栔栶æ șæ »æ żæĄ‡æĄ‹æĄæĄæĄ’æĄ–",5], -["9740","æĄœæĄæĄžæĄŸæĄȘæĄŹ",7,"æĄ”æĄž",8,"æą‚æą„æą‡",7,"æąæą‘æą’æą”æą•æą–æą˜",9,"æąŁæą€æą„æą©æąȘæą«æąŹæąźæą±æąČæąŽæą¶æą·æąž"], -["9780","æąč",6,"æŁæŁƒ",5,"æŁŠæŁŒæŁŽæŁæŁæŁ‘æŁ“æŁ”æŁ–æŁ—æŁ™æŁ›",4,"æŁĄæŁąæŁ€",9,"æŁŻæŁČæŁłæŁŽæŁ¶æŁ·æŁžæŁ»æŁœæŁŸæŁżæ€€æ€‚æ€ƒæ€„æ€†",4,"怌怏怑怓",11,"æ€Ąæ€ąæ€Łæ€„",7,"æ€źæ€Żæ€±æ€Čæ€łæ€”æ€¶æ€·æ€žæ€ș总怌怟愀愁愃",16,"愕愖愘愙愛愜感"], -["9840","æ„Ąæ„ąæ„€æ„„æ„§æ„šæ„©æ„Șæ„Źæ„­æ„Żæ„°æ„Č",4,"æ„șæ„»æ„œæ„Ÿæ„żæŠæŠƒæŠ…æŠŠæŠ‹æŠŒæŠŽ",5,"抖抗抙抚抝",9,"抩æŠȘæŠŹæŠźæŠŻæŠ°æŠČæŠłæŠ”æŠ¶æŠžæŠčæŠș抌抜"], -["9880","æŠŸæŠżæ§€æ§‚",7,"構槍槏槑槒槓槕",5,"æ§œæ§æ§žæ§Ą",11,"æ§źæ§Żæ§°æ§±æ§ł",9,"槟暀",9,"æš‹",11,"æš™",5,"æš æšą",5,"æš©æš«æšŹæš­æšźæš°æšČæšłæšŽæš¶",6,"æšż",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"æ©ąæ©Łæ©€æ©Š",10,"æ©Č",6,"æ©șæ©»æ©œæ©Ÿæ©żæȘæȘ‚æȘƒæȘ…",8,"æȘæȘ’",4,"æȘ˜",7,"æȘĄ",5], -["9980","æȘ§æȘšæȘȘæȘ­",114,"æŹ„æŹŠæŹš",6], -["9a40","æŹŻæŹ°æŹ±æŹłæŹŽæŹ”æŹ¶æŹžæŹ»æŹŒæŹœæŹżæ­€æ­æ­‚æ­„æ­…æ­ˆæ­Šæ­‹æ­",11,"歚",7,"æ­šæ­©æ­«",13,"æ­șæ­œæ­Ÿæ­żæź€æź…æźˆ"], -["9a80","æźŒæźŽæźæźæź‘æź”æź•æź—æź˜æź™æźœ",4,"æźą",7,"æź«",7,"æź¶æźž",6,"æŻ€æŻƒæŻ„æŻ†",4,"æŻŒæŻŽæŻæŻ‘æŻ˜æŻšæŻœ",4,"æŻą",7,"æŻŹæŻ­æŻźæŻ°æŻ±æŻČæŻŽæŻ¶æŻ·æŻžæŻșæŻ»æŻŒæŻŸ",6,"氈",4,"æ°Žæ°’æ°—æ°œæ°æ°žæ° æ°Łæ°„æ°«æ°Źæ°­æ°±æ°łæ°¶æ°·æ°čæ°șæ°»æ°Œæ°Ÿæ°żæ±ƒæ±„æ±…æ±ˆæ±‹",4,"汑汒汓汖汘"], -["9b40","æ±™æ±šæ±ąæ±Łæ±„æ±Šæ±§æ±«",4,"æ±±æ±łæ±”æ±·æ±žæ±șæ±»æ±Œæ±żæČ€æČ„æČ‡æČпȋæČæČ޿ȑæČ’æČ•æČ–æČ—æČ˜æČšæČœæČæČžæČ æČąæČšæČŹæČŻæČ°æČ޿ȔæČ¶æČ·æČșæł€æłæł‚æłƒæł†æł‡æłˆæł‹æłæłŽæłæł‘æł’æł˜"], -["9b80","æł™æłšæłœæłæłŸæł€æłŠæł§æł©æłŹæł­æłČæłŽæłčæłżæŽ€æŽ‚æŽƒæŽ…æŽ†æŽˆæŽ‰æŽŠæŽæŽæŽæŽ‘æŽ“æŽ”æŽ•æŽ–æŽ˜æŽœæŽæŽŸ",5,"æŽŠæŽšæŽ©æŽŹæŽ­æŽŻæŽ°æŽŽæŽ¶æŽ·æŽžæŽșæŽżæ”€æ”‚æ”„æ”‰æ”Œæ”æ”•æ”–æ”—æ”˜æ”›æ”æ”Ÿæ”Ąæ”ąæ”€æ”„æ”§æ”šæ”«æ”Źæ”­æ”°æ”±æ”Čæ”łæ””æ”¶æ”čæ”ș攻攜",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"æ¶œæ¶ąæ¶„æ¶Źæ¶­æ¶°æ¶±æ¶łæ¶Žæ¶¶æ¶·æ¶č",5,"淁淂淃淈淉淊"], -["9c40","æ·æ·Žæ·æ·æ·’æ·“æ·”æ·•æ·—æ·šæ·›æ·œæ·Ÿæ·ąæ·Łæ·„æ·§æ·šæ·©æ·Șæ·­æ·Żæ·°æ·Č淎淔淶淞æ·șæ·œ",7,"æž†æž‡æžˆæž‰æž‹æžæž’æž“æž•æž˜æž™æž›æžœæžžæžŸæžąæžŠæž§æžšæžȘæžŹæžźæž°æž±æžłæž”"], -["9c80","æž¶æž·æžčæž»",7,"æč…",7,"æčæčæč‘æč’æč•æč—æč™æčšæčœæčæčžæč ",10,"æčŹæč­æčŻ",14,"æș€æșæș‚æș„æș‡æșˆæșŠ",4,"æș‘",6,"æș™æșšæș›æșæșžæș æșĄæșŁæș€æșŠæșšæș©æș«æșŹæș­æșźæș°æșłæș”æșžæșčæșŒæșŸæșżæ»€æ»ƒæ»„æ»…æ»†æ»ˆæ»‰æ»Šæ»Œæ»æ»Žæ»æ»’æ»–æ»˜æ»™æ»›æ»œæ»æ»Łæ»§æ»Ș",5], -["9d40","æ»°æ»±æ»Čæ»łæ»”æ»¶æ»·æ»žæ»ș",7,"挃挄挅指挈挊",4,"挐挑挒挖",9,"æŒĄæŒąæŒŁæŒ„æŒŠæŒ§æŒšæŒŹæŒźæŒ°æŒČ挎挔挷",6,"æŒżæœ€æœæœ‚"], -["9d80","會朄朅月有朊朌朎",9,"æœ™æœšæœ›æœæœŸæœ æœĄæœŁæœ€æœ„æœ§",5,"æœŻæœ°æœ±æœłæœ”æœ¶æœ·æœč朻朜",6,"柅柆柇柊柋柏",12,"æŸæŸžæŸŸæŸ æŸą",4,"柚",10,"柎柔柷柞æŸș",5,"æżæżƒ",5,"æżŠ",6,"æż“",10,"æżŸæżąæżŁæż€æż„"], -["9e40","æżŠ",7,"æż°",32,"瀒",7,"瀜",6,"瀀",6], -["9e80","瀫",9,"瀶瀷瀞ç€ș",17,"灍灎灐",13,"灟",11,"灟灱çČ灳灎灷çčçș灻灜炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰ç‚Č炎炔炶ç‚șç‚Ÿç‚żçƒ„çƒ…çƒ†çƒ‡çƒ‰çƒ‹",12,"烚"], -["9f40","çƒœçƒçƒžçƒ çƒĄçƒąçƒŁçƒ„çƒȘ烟烰",6,"烞çƒș烻烌烟",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"ç„Č焳焮"], -["9f80","焔焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"ç…„ç…©",4,"煯煰煱煎煔煶煷ç…č煻煌煟",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩ç†Ș熫熭",5,"熎熶熷熞ç†ș",8,"燄",9,"燏",4], -["a040","燖",9,"燥燹燣燀燊燚",5,"燯",9,"ç‡ș",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爟爯çˆČ爳爎çˆș爌爟牀",6,"ç‰‰ç‰Šç‰‹ç‰Žç‰ç‰ç‰‘ç‰“ç‰”ç‰•ç‰—ç‰˜ç‰šç‰œç‰žç‰ ç‰Łç‰€ç‰„ç‰šç‰Șç‰«ç‰Źç‰­ç‰°ç‰±ç‰łç‰Žç‰¶ç‰·ç‰žç‰»ç‰Œç‰œçŠ‚çŠƒçŠ…",4,"犌犎犐犑犓",11,"犠",11,"犟犱çŠČ犳犔çŠș",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1","ă€€ă€ă€‚Â·Ë‰Ë‡Âšă€ƒă€…â€”ïœžâ€–â€Šâ€˜â€™â€œâ€ă€”ă€•ă€ˆ",7,"ă€–ă€—ă€ă€‘Â±Ă—Ă·âˆ¶âˆ§âˆšâˆ‘âˆâˆȘâˆ©âˆˆâˆ·âˆšâŠ„âˆ„âˆ âŒ’âŠ™âˆ«âˆźâ‰Ąâ‰Œâ‰ˆâˆœâˆâ‰ â‰źâ‰Żâ‰€â‰„âˆžâˆ”âˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïŒ„Â€ïż ïżĄâ€°Â§â„–â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Č※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑮",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","ïŒïŒ‚ïŒƒïż„ïŒ…",88,"ïżŁ"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"ÎŁ",6], -["a6c1","α",16,"σ",6], -["a6e0","ïžčïžșïžżïč€ïžœïžŸïčïč‚ïčƒïč„"], -["a6ee",""], -["a6f4","ïžłïžŽ"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ËŠË‹Ë™â€“â€•â€„â€”â„…â„‰â†–â†—â†˜â†™âˆ•âˆŸâˆŁâ‰’â‰Šâ‰§âŠżâ•",35,"▁",6], -["a880","█",7,"â–“â–”â–•â–Œâ–œâ—ąâ—Łâ—€â—„â˜‰âŠ•ă€’ă€ă€ž"], -["a8a1","ÄĂĄÇŽĂ Ä“Ă©Ä›ĂšÄ«Ă­ÇĂŹĆĂłÇ’ĂČĆ«ĂșǔĂčÇ–Ç˜ÇšÇœĂŒĂȘɑ"], -["a8bd","Ƅƈ"], -["a8c0","ÉĄ"], -["a8c5","ㄅ",36], -["a940","〡",8,"ăŠŁăŽŽăŽăŽœăŽăŽžăŽĄă„ăŽă‘ă’ă•ïž°ïżąïż€"], -["a959","â„Ąăˆ±"], -["a95c","‐"], -["a960","ăƒŒă‚›ă‚œăƒœăƒŸă€†ă‚ă‚žïč‰",9,"ïč”ïč•ïč–ïč—ïč™",8], -["a980","ïčą",4,"ïčšïč©ïčȘïč«"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狱",5,"ç‹Ș狫狔狶ç‹čç‹œç‹Ÿç‹żçŒ€çŒ‚çŒ„",5,"çŒ‹çŒŒçŒçŒçŒçŒ‘çŒ’çŒ”çŒ˜çŒ™çŒšçŒŸçŒ çŒŁçŒ€çŒŠçŒ§çŒšçŒ­çŒŻçŒ°çŒČçŒłçŒ”çŒ¶çŒș猻猌猜獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"çźç°ç±"], -["ab40","çČ",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"çŽȘ玏玭玱玎玔玶玞çŽčçŽŒçŽœçŽŸçŽżççƒ",4], -["ab80","珋珌珎珒",6,"çšç›çœççŸçĄçąçŁç€çŠçšçȘç«çŹçźçŻç°ç±çł",4], -["ac40","珞",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琀琧琩琫琭琯琱çČ琷",4,"çœçŸçżç‘€ç‘‚",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑟瑯瑱",4,"瑾ç‘čç‘ș"], -["ad40","ç‘»ç‘Œç‘œç‘żç’‚ç’„ç’…ç’†ç’ˆç’‰ç’Šç’Œç’ç’ç’‘",10,"璝璟",7,"ç’Ș",15,"璻",12], -["ad80","瓈",9,"瓓",8,"ç“ç“Ÿç“Ąç“„ç“§",6,"瓰瓱ç“Č"], -["ae40","瓳瓔瓞",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甩甧ç”Ș生甎甶ç”čç”Œç”œç”żç•ç•‚ç•ƒç•„ç•†ç•‡ç•‰ç•Šç•ç•ç•‘ç•’ç•“ç••ç•–ç•—ç•˜"], -["ae80","畝",7,"畧畚畩畫",6,"畳畔當畷ç•ș",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疱疩",4,"疭疶疷ç–șç–»ç–żç—€ç—ç—†ç—‹ç—Œç—Žç—ç—ç—‘ç—“ç——ç—™ç—šç—œç—ç—Ÿç— ç—Ąç—„ç—©ç—Źç—­ç—źç—Żç—Č痳痔痶痷痞ç—ș痻痜痟瘂瘄瘆瘇"], -["af80","ç˜ˆç˜‰ç˜‹ç˜ç˜Žç˜ç˜‘ç˜’ç˜“ç˜”ç˜–ç˜šç˜œç˜ç˜žç˜Ąç˜Łç˜§ç˜šç˜Źç˜źç˜Żç˜±ç˜Č瘶瘷ç˜čç˜ș瘻瘜癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"ç™ç™Ÿç™ ç™Ąç™ąç™€",6,"癬癭發癰",7,"ç™čç™șç™Œç™żçš€çšçšƒçš…çš‰çšŠçšŒçšçšçšçš’çš”çš•çš—çš˜çššçš›"], -["b080","皜",7,"çš„",8,"皯皰皳皔",9,"ç›€ç›ç›ƒć•Šé˜żćŸƒæŒšć“Žć”‰ć“€çš‘ç™Œè”ŒçŸźè‰Ÿçąçˆ±éš˜éžæ°šćź‰äżș按暗ćČžèƒșæĄˆè‚źæ˜‚ç›Žć‡čæ•–ç†Źçż±èą„ć‚Čć„„æ‡ŠæŸłèŠ­æŒæ‰’ć­ć§çŹ†ć…«ç–€ć·Žæ‹”è·‹é¶æŠŠè€™ćéœžçœąçˆžç™œæŸç™Ÿæ‘†äœ°èŽ„æ‹œçš—æ–‘ç­æŹæ‰łèˆŹéąæżç‰ˆæ‰źæ‹ŒäŒŽç“ŁćŠćŠžç»Šé‚Šćžźæą†æŠœè†€ç»‘æŁ’çŁ…èšŒé•‘ć‚è°€è‹žèƒžćŒ…è€’ć‰„"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盩",7,"盰盳盔盶盷ç›șç›»ç›œç›żçœ€çœ‚çœƒçœ…çœ†çœŠçœŒçœŽ",10,"çœ›çœœçœçœžçœĄçœŁçœ€çœ„çœ§çœȘ眫"], -["b180","眬眼眰",4,"çœčçœ»çœœçœŸçœżç‚ç„ç…ç†çˆ",7,"睒",7,"睜薄é›čäżć Ąé„±ćźæŠ±æŠ„æšŽè±čéČçˆ†æŻçą‘æ‚Čć‘ćŒ—èŸˆèƒŒèŽé’Ąć€ç‹ˆć€‡æƒ«ç„™èą«ć„”è‹ŻæœŹçŹšćŽ©ç»·ç”­æł”èčŠèżžé€ŒéŒ»æŻ”é„™çŹ”ćœŒçą§è“–è”œæŻ•æŻ™æŻ–ćžćș‡ç—čé—­æ•ćŒŠćż…èŸŸćŁè‡‚éżé™›éž­èŸčçŒ–èŽŹæ‰äŸżć˜ćžèŸšèŸ©èŸ«éæ ‡ćœȘè†˜èĄšéł–æ†‹ćˆ«ç˜ȘćœŹæ–Œæż’æ»šćźŸæ‘ˆć…”ć†°æŸ„äž™ç§‰é„Œç‚ł"], -["b240","睝睞睟睠着睧睩çȘ睭",11,"çș睻睌瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞥瞣瞀瞊瞚瞫瞭瞟瞯瞱çžČ瞎瞶",4], -["b280","瞌瞟矀",12,"矎",8,"矘矙矚矝",4,"矀病ćč¶çŽ»è æ’­æ‹šé’”æłąćšć‹ƒæé“‚çź”äŒŻćž›èˆ¶è„–è†Šæž€æłŠé©łæ•ćœć“șèĄ„ćŸ äžćžƒæ­„ç°żéƒšæ€–æ“ŠçŒœèŁææ‰èŽąçŹèž©é‡‡ćœ©èœè”Ąé€ć‚èš•æź‹æƒ­æƒšçżè‹èˆ±ä»“æČ§è—æ“çł™æ§œæ›čè‰ćŽ•ç­–äŸ§ć†Œæ”‹ć±‚èč­æ’ć‰èŒŹèŒ¶æŸ„çąŽæœćŻŸćČ”ć·źèŻ§æ‹†æŸŽè±ș搀æŽș蝉銋谗猠é“Čäș§é˜éą€æ˜ŒçŒ–"], -["b340","矩矹çŸȘçŸŻçŸ°çŸ±çŸČ矎矔矷çŸčçŸș矻矌砃",5,"ç Šç ‹ç Žç ç ç “ç •ç ™ç ›ç žç  ç Ąç ąç €ç šç Șç «ç źç Żç ±ç Čç łç ”ç ¶ç œç żçĄçĄ‚çĄƒçĄ„çĄ†çĄˆçĄ‰çĄŠçĄ‹çĄçĄçĄ‘çĄ“çĄ”çĄ˜çĄ™çĄš"], -["b380","硛硜硞",11,"祯",7,"神çĄčçĄșçĄ»çĄœ",6,"ćœșć°ćžžé•żćżè‚ ćŽ‚æ•žç•…ć”±ć€Ąè¶…æŠ„é’žæœć˜Čæœźć·ąć”ç‚’èœŠæ‰Żæ’€æŽŁćœ»æŸˆéƒŽè‡ŁèŸ°ć°˜æ™šćż±æČ‰é™ˆè¶èĄŹæ’‘ç§°ćŸŽæ©™æˆć‘ˆäč˜çš‹æƒ©æŸ„èŻšæ‰żé€žéȘ‹ç§€ćƒç—ŽæŒćŒ™æ± èżŸćŒ›é©°è€»éœżäŸˆć°șè”€çż…æ–„ç‚œć……ć†Čè™«ćŽ‡ćź æŠœé…Źç•ŽèžŒçš æ„ç­čä»‡ç»žçž…äž‘è‡­ćˆć‡șæ©±ćŽšèș‡é”„雏滁陀愚"], -["b440","çą„çą…çą†çąˆçąŠçą‹çąçąçą’çą”çą•çą–çą™çąçąžçą çąąçą€çąŠçąš",7,"織繶繷繞çąșçą»çąŒçąœçążçŁ€çŁ‚çŁƒçŁ„çŁ†çŁ‡çŁˆçŁŒçŁçŁŽçŁçŁ‘çŁ’çŁ“çŁ–çŁ—çŁ˜çŁš",9], -["b480","磀磄磊磧磩çŁȘ磫磭",4,"磳磔磶磞çŁč磻",5,"瀂瀃瀄瀆",6,"çĄ€ć‚šçŸ—æè§Šć€„æŁć·ç©żæ€œäŒ èˆč斘äžČ疼çȘ—ćčąćșŠé—Żćˆ›ćčç‚Šæ¶é”€ćž‚æ˜„æ€żé†‡ć”‡æ·łçșŻè ąæˆłç»°ç–”èŒšçŁé›ŒèŸžæ…ˆç“·èŻæ­€ćˆșè”æŹĄèȘè‘±ć›±ćŒ†ä»Žäž›ć‡‘çȗ醋簇促èčżçŻĄçȘœæ‘§ćŽ”ć‚Źè„†ç˜çČčæ·Źçż æ‘ć­˜ćŻžçŁ‹æ’źæ“æŽȘæŒ«é”™æ­èŸŸç­”ç˜©æ‰“ć€§ć‘†æ­čć‚ŁæˆŽćžŠæź†ä»ŁèŽ·èą‹ćŸ…é€ź"], -["b540","瀍",5,"瀔",9,"瀟",4,"瀄",14,"瀔",4,"ç€œç€żç„‚ç„ƒç„„ç„…ç„‡ç„Š",8,"ç„”ç„•ç„˜ç„™ç„Ąç„Ł"], -["b580","焀焊焩ç„Ș焫焏焟焰",6,"ç„čç„»",4,"犂犃犆犇犈犉犋犌犍犎犐犑犒怠耜担äžčć•éƒžæŽžèƒ†æ—Šæ°źäœ†æƒźæ·ĄèŻžćŒčè›‹ćœ“æŒĄć…šèĄæĄŁćˆ€æŁèčˆć€’ćČ›ç„·ćŻŒćˆ°çš»æ‚Œé“ç›—ćŸ·ćŸ—çš„èčŹçŻç™»ç­‰çžȘć‡łé‚“ć €äœŽæ»ŽèżȘæ•ŒçŹ›ç‹„æ¶€çżŸć«ĄæŠ”ćș•ćœ°è’‚çŹŹćžćŒŸé€’çŒ”éą æŽ‚æ»‡çą˜ç‚čć…žé›ćž«ç””äœƒç”žćș—æƒŠć„ æ·€æźżçą‰ćŒé›•ć‡‹ćˆæŽ‰ćŠé’“è°ƒè·ŒçˆčçąŸè¶èż­è°ć "], -["b640","穓",6,"穛",11,"犚",10,"犎",4,"çŠŒçŠżç§‚ç§„ç§…ç§‡ç§ˆç§Šç§Œç§Žç§ç§ç§“ç§”ç§–ç§—ç§™",5,"ç§ ç§Ąç§ąç§„ç§šç§Ș"], -["b680","ç§Źç§źç§±",6,"ç§čç§șç§Œç§Ÿç§żçšçš„çš…çš‡çšˆçš‰çšŠçšŒçš",4,"çš•çš–çš˜çš™çš›çšœäžç›Żćźé’‰éĄ¶éŒŽé”­ćźšèźąäžąäžœć†Źè‘Łæ‡‚ćŠšæ ‹äŸ—æ«ć†»æŽžć…œæŠ–æ–—é™Ąè±†é€—ç—˜éƒœçŁæŻ’çŠŠç‹ŹèŻ»ć ”çč蔌杜镀肚ćșŠæžĄćŠ’ç«ŻçŸ­é”»æź”æ–­çŒŽć †ć…‘é˜ŸćŻč湩搚èčČæ•ŠéĄżć›€é’ç›ŸéæŽ‡ć“†ć€šć€ș枛èșČæœ”è·șèˆ”ć‰æƒ°ć •è›Ÿćłšéč…äż„éąèźčćš„æ¶ćŽ„æ‰Œéé„‚é„żæ©è€Œć„żè€łć°”é„”æŽ±äșŒ"], -["b740","çšçšŸçšĄçšąçš€",14,"皎皔皶皞çšș皟穀",5,"穇",9,"穒",4,"穘",16], -["b780","ç©©",6,"穱ç©Čç©łç©”ç©»ç©Œç©œç©ŸçȘ‚çȘ…çȘ‡çȘ‰çȘŠçȘ‹çȘŒçȘŽçȘçȘçȘ“çȘ”çȘ™çȘšçȘ›çȘžçȘĄçȘąèŽ°ć‘çœšç­äŒäčé˜€æł•çè—©ćž†ç•Șçż»æšŠçŸŸé’’çčć‡ĄçƒŠćèż”èŒƒèŽ©çŠŻé„­æł›ćŠèŠłæ–čè‚Șæˆżé˜ČćŠšä»żèźżçșș攟èČéžć•ĄéŁžè‚„ćŒȘèŻœć è‚șćșŸæČžèŽčèŠŹé…šć©æ°›ćˆ†çș·ćŸç„šæ±ŸçČ‰ć„‹ä»œćżżæ„€çČȘäž°ć°æž«èœ‚ćł°é”‹éŁŽç–Żçƒœé€ąć†ŻçŒèźœć„‰ć‡€äœ›ćŠć€«æ•·è‚€ć­”æ‰¶æ‹‚èŸćč…æ°ŸçŹŠäŒäż˜æœ"], -["b840","çȘŁçȘ€çȘ§çȘ©çȘȘçȘ«çȘź",4,"çȘŽ",10,"竀",10,"竌",9,"ç«—ç«˜ç«šç«›ç«œç«ç«Ąç«ąç«€ç«§",5,"竟竰竱ç«Č竳"], -["b880","竎",4,"ç«»ç«Œç«ŸçŹ€çŹçŹ‚çŹ…çŹ‡çŹ‰çŹŒçŹçŹŽçŹçŹ’çŹ“çŹ–çŹ—çŹ˜çŹšçŹœçŹçŹŸçŹĄçŹąçŹŁçŹ§çŹ©çŹ­æ”źæ¶ȘçŠèą±ćŒ—ç”«æŠšèŸ…äżŻé‡œæ–§è„Żè…‘ćșœè…è”Žć‰ŻèŠ†è”‹ć€ć‚…ä»˜é˜œçˆ¶è…čèŽŸćŻŒèźŁé™„ćŠ‡çŒšć’ć™¶ć˜ŽèŻ„æ”č抂钙盖æș‰ćčČç”˜æ†æŸ‘ç«żè‚è”¶æ„Ÿç§†æ•ąè”Łć†ˆćˆšé’ąçŒžè‚›çșČćČ—æžŻæ çŻ™çš‹é«˜è†çŸ”çł•æžé•çšżć‘Šć“„æ­Œææˆˆéžœèƒłç–™ć‰Čé©è‘›æ Œè›€é˜éš”é“ŹäžȘ搄给æ č跟耕曎ćșšçŸč"], -["b940","珯珰çŹČ珎珔珶珷çŹčçŹ»çŹœçŹż",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"ç­Żç­°ç­łç­Žç­¶ç­žç­șç­Œç­œç­żçźçź‚çźƒçź„çź†",6,"缎缏"], -["b980","çź‘çź’çź“çź–çź˜çź™çźšçź›çźžçźŸçź çźŁçź€çź„çźźçźŻçź°çźČ石矔矶矷çźč",7,"çŻ‚çŻƒçŻ„ćŸ‚è€żæą—ć·„æ”»ćŠŸæ­éŸšäŸ›èșŹć…Źćź«ćŒ“ć·©æ±žæ‹±èŽĄć…±é’©ć‹ŸæČŸè‹Ÿç‹—ćžąæž„èŽ­ć€ŸèŸœè‡ć’•çźäŒ°æČœć­€ć§‘éŒ“ć€è›ŠéȘšè°·è‚Ąæ•…éĄŸć›șé›‡ćˆźç“œć‰ćŻĄæŒ‚è€‚äč–æ‹æ€ȘæŁșć…łćź˜ć† è§‚çźĄéŠ†çœæƒŻçŒèŽŻć…‰ćčżé€›ç‘°è§„ćœ­çĄ…ćœ’éŸŸé—șèœšéŹŒèŻĄç™žæĄ‚æŸœè·ȘèŽ”ćˆœèŸŠæ»šæŁé”…éƒ­ć›œæžœèŁčèż‡ć“ˆ"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"çŻ›çŻœçŻžçŻŸçŻ çŻąçŻŁçŻ€çŻ§çŻšçŻ©çŻ«çŻŹçŻ­çŻŻçŻ°çŻČ",4,"篞çŻčçŻșçŻ»çŻœçŻż",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"ç° ",5,"ç°šç°©ç°«",12,"ç°č",5,"籂éȘžć­©æ”·æ°Šäș„ćźłéȘ‡é…Łæ†šé‚ŻéŸ©ć«æ¶”ćŻ’ć‡œć–Šçœ•çż°æ’Œææ—±æ†Ÿæ‚ç„Šæ±—æ±‰ć€Żæ­èˆȘ棕暎è±ȘæŻ«éƒć„œè€—ć·æ”©ć‘”ć–è·èæ žçŠŸć’Œäœ•ćˆç›’èȉ阂æČłæ¶žè”«è€éč€èŽșć˜żé»‘ç—•ćŸˆç‹ æšć“ŒäșšæšȘèĄĄæ’èœ°ć“„çƒ˜è™čéžżæŽȘćźćŒ˜çșąć–‰äŸŻçŒŽćŒćŽšć€™ćŽć‘ŒäčŽćżœç‘šćŁ¶è‘«èƒĄèŽç‹çłŠæč–"], -["bb40","籃",9,"籎",36,"ç±”",5,"籟",9], -["bb80","çȈçȊ",6,"çȓçȔçȖçșçȚçțçČ çČĄçČŁçČŠçȧçČšçČ©çČ«çČŹçČ­çČŻçȰçČŽ",4,"çČșçČ»ćŒ§è™Žć”ŹæŠ€äș’æČȘæˆ·èŠ±ć“—ćŽçŒŸæ»‘ç”»ćˆ’ćŒ–èŻæ§ćŸŠæ€€æ·źćæŹąçŽŻæĄ“èż˜çŒ“æąæ‚Łć”€ç—Șè±ąç„•æ¶ŁćźŠćč»è’慌黄çŁșè—ç°§çš‡ć‡°æƒ¶ç…Œæ™ƒć茿è°Žç°æŒ„èŸ‰ćŸœæąè›”ć›žæŻæ‚”æ…§ć‰æƒ æ™ŠèŽżç§œäŒšçƒ©æ±‡èźłèŻČç»˜è€æ˜ć©šé­‚æ”‘æ··è±æŽ»äŒ™ç«èŽ·æˆ–æƒ‘éœèŽ§ç„žć‡»ćœŸćŸșæœșç•žçšœç§Żçź•"], -["bc40","çȿ糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"çł©",5,"çł°",7,"çłčçłșçłŒ",13,"箋",5], -["bc80","箑",14,"玥玣玀玄玊玚玩çŽȘ玏玭玟现",6,"肌鄄èżčæż€èź„éžĄć§Źç»©çŒ‰ć‰æžæŁ˜èŸ‘ç±é›†ćŠæ€„ç–Ÿæ±Čćłć«‰çș§æŒ€ć‡ è„Šć·±è“ŸæŠ€ć†€ć­ŁäŒŽç„­ć‰‚æ‚žæ”ŽćŻ„ćŻ‚èźĄèź°æ—ąćżŒé™…ćŠ“ç»§çșȘć˜‰æž·ć€čäœłćź¶ćŠ èšéąŠèŽŸç”Čé’Ÿć‡çšŒä»·æž¶é©Ÿć«æ­Œç›‘ćšć°–çŹșé—Žç…Žć…Œè‚©è‰°ć„žçŒ„èŒ§æŁ€æŸŹçą±çĄ·æ‹ŁæĄçź€äż­ć‰Șć‡èæ§›é‰Žè·”èŽ±è§é”źçź­ä»¶"], -["bd40","玷",54,"甯",7], -["bd80","甞",32,"ć„èˆ°ć‰‘é„Żæžæș…æ¶§ć»șćƒ”ć§œć°†æ”†æ±Ÿç–†è’‹æĄšć„–èźČćŒ é…±é™è•‰æ€’ç€ç„Šèƒ¶äș€éƒŠæ”‡éȘ„ćš‡ćšŒæ…é“°çŸ«äŸ„è„šç‹Ąè§’é„șçŒŽç»žć‰żæ•™é…”èœżèŸƒć«çȘ–æ­æŽ„çš†ç§žèĄ—é˜¶æˆȘćŠ«èŠ‚æĄ”æ°æ·ç«ç«­æŽç»“è§Łć§æˆ’è—‰èŠ„ç•Œć€Ÿä»‹ç–„èŻ«ć±Šć·Ÿç­‹æ–€é‡‘ä»ŠæŽ„è„ŸçŽ§é”Šä»…è°šèż›éłæ™‹çŠèż‘çƒŹæ”ž"], -["be40","継",12,"ç¶§",6,"ç¶Ż",42], -["be80","線",32,"ć°œćŠČè†ć…ąèŒŽç›æ™¶éČžäșŹæƒŠçČŸçČłç»äș•è­Šæ™Żéąˆé™ćąƒæ•Źé•œćŸ„ç—‰é–ç«Ÿç«žć‡€ç‚ŻçȘ˜æȘç©¶çș çŽ–éŸ­äč…灞äčé…’ćŽ©æ•‘æ—§è‡Œèˆ…ć’Žć°±ç–šéž æ‹˜ç‹™ç–œć±…é©čèŠć±€ć’€çŸ©äžŸæČźèšæ‹’æźć·šć…·è·èžžé”Żäż±ć„æƒ§ç‚Źć‰§æéčƒćšŸć€Šçœ·ć·ç»ąæ’…æ”«æŠ‰æŽ˜ć€”çˆ”è§‰ć†łèŻ€ç»ć‡èŒé’§ć†›ć›ćł»"], -["bf40","ç·»",62], -["bf80","çžș瞌",4,"çč‚",4,"çčˆ",21,"äżŠç«Łæ”šéƒĄéȘć–€ć’–ćĄć’ŻćŒ€æ©æ„·ć‡Żæ…šćˆŠć Ș拘李砍看ćș·æ…·çł æ‰›æŠ—äșąç‚•è€ƒæ‹·çƒ€é ć·è‹›æŸŻæŁ”çŁ•éą—ç§‘ćŁłć’łćŻæžŽć…‹ćˆ»ćźąèŻŸè‚Żć•ƒćžŠæłć‘ć­ç©șæć­”æŽ§æŠ ćŁæ‰ŁćŻ‡æžŻć“­çȘŸè‹Šé…·ćș“èŁ€ć€žćžźæŒŽè·šèƒŻć—ç­·äŸ©ćż«ćźœæŹŸćŒĄç­ç‹‚æĄ†çŸżçœ¶æ—·ć†”äșç›”ćČżçȘ„è‘”ć„Žé­ć‚€"], -["c040","çčž",35,"çșƒ",23,"çșœçșçșž"], -["c080","çșźçșŽçș»çșŒç»–绀经ç»č猊猐猞猷çŒč猻",6,"眃眆",9,"眒眓銈愧æșƒć€æ˜†æ†ć›°æ‹Źæ‰©ć»“é˜”ćžƒæ‹‰ć–‡èœĄè…ŠèŸŁć•ŠèŽ±æ„蔖蓝ć©Șæ æ‹ŠçŻźé˜‘ć…°æŸœè°°æœè§ˆæ‡’çŒ†çƒ‚æ»„ç…æŠ”ç‹Œć»ŠéƒŽæœ—æ”ȘæžćŠłç‰ąè€äœŹć§„é…Șçƒ™æ¶ć‹’äčé›·é•­è•ŸçŁŠçŽŻć„Ąćž’æ“‚è‚‹ç±»æłȘæŁ±æ„žć†·ćŽ˜æąšçŠé»ŽçŻ±ç‹žçŠ»æŒ“ç†æŽé‡ŒéČ€ç€ŒèŽ‰è”ćæ —äžœćŽ‰ćŠ±ç ŸćŽ†ćˆ©ć‚ˆäŸ‹äż"], -["c140","çœ–çœ™çœ›çœœçœçœžçœ çœŁ",4,"çœ«çœŹçœ­çœŻçœ°çœłçœ”çœ¶çœ·çœžçœșçœ»çœŒçœœçœżçŸ€çŸ‚",7,"矋矍矏",4,"矕",4,"çŸ›çŸœçŸ çŸąçŸŁçŸ„çŸŠçŸš",6,"矱"], -["c180","çŸł",4,"çŸșçŸ»çŸŸçż€çż‚çżƒçż„çż†çż‡çżˆçż‰çż‹çżçż",4,"翖翗翙",5,"翹翣痹立çȒæČ„éš¶ćŠ›ç’ƒć“©äż©è”èŽČèżžé•°ć»‰æ€œæ¶Ÿćž˜æ•›è„žé“Ÿæ‹ç‚Œç»ƒçČźć‡‰æąçČ±è‰Żäž€èŸ†é‡æ™Ÿäșźè°…æ’©èŠćƒšç–—ç‡ŽćŻ„èŸœæœŠäș†æ’‚é•Łć»–æ–™ćˆ—èŁ‚çƒˆćŠŁçŒŽçłæž—çŁ·éœ–äžŽé‚»éłžæ·‹ć‡›è”ćæ‹ŽçŽČè±é›¶éŸ„é“ƒäŒ¶çŸšć‡Œç”é™”ćČ­éą†ćŠä»€æșœç‰æŠŽçĄ«éŠç•™ćˆ˜ç˜€æ”æŸłć…­éŸ™è‹ć’™çŹŒçȘż"], -["c240","翀翧翚çżȘ翫翏翭翯çżČ翎",6,"çżœçżŸçżżè€‚è€‡è€ˆè€‰è€Šè€Žè€è€‘è€“è€šè€›è€è€žè€Ÿè€Ąè€Łè€€è€«",5,"è€Č耎è€čè€ș而耟聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"èČ",11,"éš†ćž„æ‹ąé™‡æ„Œćš„æ‚çŻ“æŒé™‹èŠŠćąéą…ćșç‚‰æŽłć€è™éȁéș“çąŒéœČè·Żè”‚éčżæœžçŠ„ćœ•é™†æˆźé©Žć•é“äŸŁæ—…ć±„ć±ĄçŒ•è™‘æ°ŻćŸ‹çŽ‡æ»€ç»żćłŠæŒ›ć­Șæ»Šć”ä豿Ž ç•„æŠĄèœźäŒŠä»‘æČŠçș¶èźș萝èžșçœ—é€»é”Łçź©éȘĄèŁžèœæŽ›éȘ†ç»œćЈéș»çŽ›ç èš‚é©ŹéȘ‚ć˜›ć—ćŸ‹äč°éșŠć–èżˆè„‰çž’éŠ’è›źæ»Ąè”“æ›Œæ…ąæŒ«"], -["c340","聟肁肂肅肈肊肍",5,"è‚”è‚•è‚—è‚™è‚žè‚Łè‚Šè‚§è‚šè‚Źè‚°è‚łè‚”è‚¶è‚žè‚č肻胅胇",4,"胏",6,"èƒ˜èƒŸèƒ èƒąèƒŁèƒŠèƒźèƒ”èƒ·èƒčèƒ»èƒŸèƒżè„€è„è„ƒè„„è„…è„‡è„ˆè„‹"], -["c380","脌脕脗脙脛脜脝脟",12,"è„­è„źè„°è„łè„Žè„”è„·è„č",4,"è„żè°©èŠ’èŒ«ç›Čæ°“ćż™èŽœçŒ«èŒ…é”šæŻ›çŸ›é“†ćŻèŒ‚ć†’ćžœèČŒèŽžäčˆçŽ«æžšæą…é…¶éœ‰ç…€æČĄçœ‰ćȘ’é•æŻçŸŽæ˜§ćݐćŠčćȘšé—šé—·ä»ŹèŒè’™æȘŹç›Ÿé”°çŒ›æąŠć­ŸçœŻé†šéĄçłœèż·è°œćŒ„ç±łç§˜è§…æłŒèœœćŻ†ćč‚æŁ‰çœ ç»”ć†•ć…ć‹‰ćš©çŒ…éąè‹—æçž„è—ç§’æžșćș™ćŠ™è”‘ç­æ°‘æŠżçšżæ•æ‚Żé—œæ˜ŽèžŸéžŁé“­ćć‘œè°Źæ‘ž"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"è…Ąè…ąè…Łè…€è…Šè…šè…Șè…«è…Źè…Żè…Čè…łè…”è…¶è…·è…žè†è†ƒ",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膀膄"], -["c480","膧膩膫",7,"膎",5,"è†Œè†œè†Ÿè†żè‡„è‡…è‡‡è‡ˆè‡‰è‡‹è‡",6,"æ‘čè˜‘æšĄè†œçŁšæ‘©é­”æŠčæœ«èŽ«ćąšé»˜æČ«æŒ ćŻžé™Œè°‹ç‰ŸæŸæ‹‡ç‰Ąäș©ć§†æŻćą“æšźćč•ć‹Ÿæ…•æœšç›źçŠç‰§ç©†æ‹żć“Ș摐钠那湜çșłæ°–äčƒć„¶è€ć„ˆć—ç”·éšŸć›ŠæŒ è„‘æŒé—čæ·–ć‘ąéŠć†…ć«©èƒœćŠźéœ“ć€Șæł„ć°Œæ‹Ÿäœ ćŒżè…»é€†æșș蔫拈ćčŽçąŸæ’”æ»ćż”ćš˜é…żéžŸć°żæè‚ć­œć•źé•Šé•æ¶…æ‚šæŸ ç‹žć‡ćź"], -["c540","臔",14,"è‡€è‡„è‡Šè‡šè‡©è‡«è‡ź",4,"臔",5,"è‡œè‡żèˆƒèˆ‡",4,"舎舏舑舓舕",5,"èˆèˆ èˆ€èˆ„èˆŠèˆ§èˆ©èˆźèˆČèˆșèˆŒèˆœèˆż"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"è‰©æ‹§æłžç‰›æ‰­é’źçșœè„“æ”“ć†œćŒ„ć„ŽćŠȘæ€’ć„łæš–è™ç–ŸæŒȘæ‡ŠçłŻèŻșć“ŠæŹ§éž„æźŽè—•ć‘•ć¶æČ€ć•Șè¶ŽçˆŹćž•æ€•ç¶æ‹æŽ’ç‰ŒćŸ˜æčƒæŽŸæ”€æœ˜ç›˜çŁç›Œç•”ćˆ€ć›äč“ćșžæ—è€Șèƒ–æŠ›ć’†ćˆšç‚źèąè·‘æłĄć‘žèƒšćŸčèŁŽè””é™Ș配䜩æČ›ć–·ç›†ç °æŠšçƒčæŸŽćœ­è“ŹæŁšçĄŒçŻ·è†šæœ‹éčæ§çą°ćŻç ’éœčæ‰čæŠ«ćŠˆç”æŻ—"], -["c640","è‰Șè‰«è‰Źè‰­è‰±è‰”è‰¶è‰·è‰žè‰»è‰ŒèŠ€èŠèŠƒèŠ…èŠ†èŠ‡èŠ‰èŠŒèŠèŠ“èŠ”èŠ•èŠ–èŠšèŠ›èŠžèŠ èŠąèŠŁèŠ§èŠČ芔芶èŠșèŠ»èŠŒèŠżè‹€è‹‚è‹ƒè‹…è‹†è‹‰è‹è‹–è‹™è‹šè‹è‹ąè‹§è‹šè‹©è‹Șè‹Źè‹­è‹źè‹°è‹Čè‹łè‹”è‹¶è‹ž"], -["c680","è‹ș苌",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩èŒȘèŒźèŒ°èŒČèŒ·èŒ»èŒœć•€è„Ÿç–Č皼ćŒčç—žćƒ»ć±è­ŹçŻ‡ćç‰‡éȘ—éŁ˜æŒ‚ç“ąç„šæ’‡çž„æ‹Œéą‘èŽ«ć“è˜äč’ćȘè‹č萍ćčłć‡­ç“¶èŻ„ć±ćĄæłŒéą‡ć©†ç Žé­„èż«çČ•ć‰–æ‰‘é“șä»†èŽ†è‘Ąè©è’ČćŸ”æœŽćœƒæ™źæ”Šè°±æ›ç€‘æœŸæŹșæ –æˆšćŠ»äžƒć‡„æŒ†æŸ’æČć…¶æŁ‹ć„‡æ­§ç•ŠćŽŽè„éœæ——ç„ˆç„éȘ‘è”·ćȂäčžäŒćŻć„‘ç Œć™šæ°”èż„ćŒƒæ±œæłŁè꫿ސ"], -["c740","èŒŸèŒżèè‚è„è…èˆèŠ",4,"荓荕",4,"èèąè°",6,"èčèș荟",6,"èŽ‡èŽˆèŽŠèŽ‹èŽŒèŽèŽèŽèŽ‘èŽ”èŽ•èŽ–èŽ—èŽ™èŽšèŽèŽŸèŽĄ",6,"èŽŹèŽ­èŽź"], -["c780","èŽŻèŽ”èŽ»èŽŸèŽżè‚èƒè„è†èˆè‰è‹èèŽèè‘è’è“è•è—è™èšè›èžèąèŁè€èŠè§èšè«èŹè­æ°æŽœç‰”æ‰Šé’Žé“…ćƒèżç­Ÿä»Ÿè°ŠäčŸé»”é’±é’łć‰æœœéŁæ”…è°Žć ‘ć”ŒæŹ æ­‰æžȘć‘›è…”çŸŒćą™è”·ćŒșæŠąæ©‡é”迕ȿ‚„æĄ„çž§äč”äŸšć·§éž˜æ’Źçż˜ćł­äżçȘćˆ‡èŒ„äž”æ€ŻçȘƒé’ŠäŸ”äșČ秊琎拀èŠčæ“’çŠœćŻæČé’èœ»æ°ąć€Ÿćżæž…æ“Žæ™Žæ°°æƒ…éĄ·èŻ·ćș†çŒç©·ç§‹äž˜é‚±çƒæ±‚ć›šé…‹æł…è¶‹ćŒș蛆æ›ČèșŻć±ˆé©±æž "], -["c840","èźèŻèł",4,"èșè»èŒèŸèżè€è‚è…è‡èˆè‰èŠèè’",5,"萙萚萛萞",5,"萩",7,"èČ",5,"èčèș萻萟",7,"葇葈葉"], -["c880","葊",6,"葒",4,"è‘˜è‘è‘žè‘Ÿè‘ è‘ąè‘€",4,"è‘Șè‘źè‘Żè‘°è‘Č葎葷è‘čè‘»è‘Œć–ćš¶éŸ‹è¶ŁćŽ»ćœˆéą§æƒé†›æł‰ć…šç—Šæ‹łçŠŹćˆžćŠçŒș炔瘾据éčŠæŠ·çĄźé›€èŁ™çŸ€ç„¶ç‡ƒć†‰æŸ“ç“€ćŁ€æ”˜ćš·èź©é„¶æ‰°ç»•æƒč热棏仁äșșćżéŸ§ä»»èź€ćˆƒćŠŠçș«æ‰”ä»æ—„æˆŽèŒžè“‰èŁèžç†”æș¶ćźčç»’ć†—æ‰æŸ”è‚‰èŒčè •ć„’ć­șćŠ‚èŸ±äčłæ±ć…„è€„èœŻé˜źè•Šç‘žé”é—°æ¶Šè‹„ćŒ±æ’’æŽ’èšè…źéłƒćĄžè”›äž‰ć"], -["c940","葜",4,"蒃蒄蒅蒆蒊蒍蒏",7,"è’˜è’šè’›è’è’žè’Ÿè’ è’ą",12,"è’°è’±è’łè’”è’¶è’·è’»è’Œè’Ÿè“€è“‚è“ƒè“…è“†è“‡è“ˆè“‹è“Œè“Žè“è“’è“”è“•è“—"], -["c980","蓘",4,"è“žè“Ąè“ąè“€è“§",4,"è“­è“źè“Żè“±",10,"è“œè“Ÿè”€è”è”‚äŒžæ•ŁæĄ‘ć—“äž§æ”éȘšæ‰«ć«‚ç‘Ÿè‰Čæ¶©æŁźćƒ§èŽŽç ‚æ€ćˆčæČ™çș±ć‚»ć•„ç…žç­›æ™’çŠè‹«æ‰ć±±ćˆ ç…œèĄ«é—Șé™•æ“…è”Ąè†łć–„æ±•æ‰‡çŒźćą’äŒ€ć•†è”æ™ŒäžŠć°šèŁłæąąæŽçšçƒ§èŠć‹șéŸ¶ć°‘ć“šé‚”ç»ć„ąè”Šè›‡èˆŒèˆè”Šæ‘„ć°„æ…‘æ¶‰ç€ŸèźŸç ·ç”łć‘»äŒžèș«æ·±ćš ç»…焞æČˆćźĄć©¶ç”šè‚Ÿæ…Žæž—ćŁ°ç”Ÿç”„ç‰Čć‡ç»ł"], -["ca40","蔃",8,"è”è”Žè”è”è”’è””è”•è”–è”˜è”™è”›è”œè”è”žè” è”ą",8,"蔭",9,"蔟",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕄蕊蕧蕩",8,"è•łè•”è•¶è•·è•žè•Œè•œè•żè–€è–çœç››ć‰©èƒœćœŁćžˆć€±ç‹źæ–œæčżèŻ—ć°žè™±ćçŸłæ‹Ÿæ—¶ä»€éŁŸèš€ćźžèŻ†ćČçŸąäœżć±Žé©¶ć§‹ćŒç€șćŁ«äž–æŸżäș‹æ‹­èȘ“é€ćŠżæ˜Żć—œć™Źé€‚ä»•äŸé‡Šé„°æ°ćž‚æƒćź€è§†èŻ•æ”¶æ‰‹éŠ–ćźˆćŻżæŽˆć”źć—ç˜Šć…œè”ŹæžąæąłæźŠæŠ’èŸ“ć”èˆ’æ·‘ç–äčŠè”Žć­°ç†Ÿè–ݿ𑿛™çœČèœ€é»éŒ ć±žæœŻèż°æ ‘æŸæˆç«–ćą…ćș¶æ•°æŒ±"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"è–„è–Šè–§è–©è–«è–Źè–­è–±",5,"è–žè–ș",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"è—„è—Šè—§è—šè—Ș",14,"æ•ćˆ·è€æ‘”èĄ°ç”©ćž…æ “æ‹ŽéœœćŒçˆœè°æ°ŽçĄçšŽćźçžŹéĄșèˆœèŻŽçĄ•æœ”çƒæ–Żæ’•ć˜¶æ€ç§ćžäžæ­»è‚†ćŻș旣曛äŒș䌌é„Čć·łæŸè€žæ€‚éą‚é€ćź‹èźŒèŻ”æœè‰˜æ“žć—œè‹é…„äż—çŽ é€Ÿçȟ想桑æșŻćźżèŻ‰è‚ƒé…žè’œçź—è™œéš‹éšç»„é«“çąŽćČç©—é‚éš§ç„Ÿć­™æŸçŹ‹è“‘æą­ć”†çŒ©ççŽąé”æ‰€ćĄŒä»–ćźƒć„č桔"], -["cc40","è—čè—ș藌藜藟蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘚è˜Ș",13,"è˜čè˜șè˜»è˜œè˜Ÿè˜żè™€"], -["cc80","虁",11,"虒虓處",4,"è™›è™œè™è™Ÿè™ è™Ąè™Ł",7,"獭挞èč‹èžèƒŽè‹”æŠŹć°æł°é…žć€Șæ€æ±°ćæ‘ŠèŽȘç˜«æ»©ć›æȘ€ç—°æœ­è°­è°ˆćŠæŻŻèą’çąłæŽąćčç‚­æ±€ćĄ˜æȘć ‚æŁ è†›ć”çł–ć€˜èșșæ·Œè¶Ÿçƒ«æŽæ¶›æ»”ç»Šè„æĄƒé€ƒæ·˜é™¶èźšć„—ç‰č藀腟疌èȘŠæąŻć‰”èžąé”‘æéą˜èč„ć•Œäœ“æ›żćšæƒ•æ¶•ć‰ƒć±‰ć€©æ·»ćĄ«ç”°ç”œæŹèˆ”è…†æŒ‘æĄèżąçœșè·łèŽŽé“ćž–ćŽ…ćŹçƒƒ"], -["cd40","è™­è™Żè™°è™Č",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"èš„èšŠèš«èš­èšźèšČèšłèš·èšžèšč蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","è›è› è›Ąè›ąè›Łè›„è›Šè›§è›šè›Șè›«è›Źè›Żè›”è›¶è›·è›șè›»è›Œè›œè›żèœèœ„èœ…èœ†èœ‹èœŒèœŽèœèœèœ‘èœ”èœ–æ±€ć»·ćœäș­ćș­æŒșè‰‡é€šæĄé…źçžłćŒé“œćœ€ç«„æĄ¶æ…ç­’ç»Ÿç—›ć·æŠ•ć€Žé€ć‡žç§ƒçȘć›ŸćŸ’é€”æ¶‚ć± ćœŸćć…”æčć›ąæŽšéą“è…żèœ•è€Șé€€ćžć±Żè‡€æ‹–æ‰˜è„±éž”é™€é©źé©Œæ€­ćŠ„æ‹“ć”ŸæŒ–ć“‡è›™æŽŒćšƒç“Šèąœæ­Șć€–è±ŒćŒŻæčŸçŽ©éĄœäžžçƒ·ćźŒçą—æŒœæ™šçš–æƒ‹ćź›ć©‰äž‡è…•æ±Ș王äșĄæž‰çœ‘ćŸ€æ—șæœ›ćż˜ćŠ„ćš"], -["ce40","蜙蜛蜝蜟蜠蜀蜊蜧蜚èœȘèœ«èœŹèœ­èœŻèœ°èœČèœłèœ”èœ¶èœžèœčèœș蜌蜜蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"èĄèąèŠ",7,"èŻè±èČèłè”"], -["ce80","蝷蝞èčèșèżèž€èžèž„èž†èž‡èž‰èžŠèžŒèžŽ",4,"螔螕螖螘",6,"螠",4,"ć·ćŸźć±éŸŠèżæĄ…ć›Žć”ŻæƒŸäžșæœç»Žè‹‡èŽć§”äŒŸäŒȘć°ŸçșŹæœȘè”šć‘łç•èƒƒć–‚é­äœæž­è°“ć°‰æ…°ć«ç˜Ÿæž©èšŠæ–‡é—»çșčć»çšłçŽŠé—źć—Ąçżç“źæŒèœ—æ¶ĄçȘæˆ‘æ–Ąć§æĄæČƒć·«ć‘œé’šä茿±ĄèŻŹć±‹æ— èŠœæą§ćŸćŽæŻ‹æ­Šäș”æ‚ćˆèˆžäŒäŸźćžæˆŠé›Ÿæ™€ç‰©ć‹żćŠĄæ‚ŸèŻŻæ˜”ç†™æžè„żçĄ’çŸœæ™°ć˜»ćžé”Ąç‰ș"], -["cf40","螄螊螧螩èžȘèžźèž°èž±èžČ螎螶螷螞èžčèž»èžŒèžŸèžżèŸ",4,"蟇蟈蟉蟌",4,"蟔",6,"èŸœèŸèŸžèŸŸèŸĄèŸąèŸŁèŸ€èŸŠèŸ§èŸšèŸ©èŸ«èŸŹèŸ­èŸŻ",9], -["cf80","èŸșèŸ»èŸŒèŸœèŸżè €è è ‚è „",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"è Łçš€æŻćžŒæ‚‰è†ć€•æƒœç†„çƒŻæșȘ汐犀æȘ„èą­ćž­äč ćȘłć–œé“ŁæŽ—çł»éš™æˆç»†çžŽè™ŸćŒŁéœžèŸ–æš‡ćłĄäŸ ç‹­äž‹ćŽŠć€ć“æŽ€é”šć…ˆä»™éȜçș€ć’žèŽ€èĄ”èˆ·é—Čæ¶ŽćŒŠć«Œæ˜Ÿé™©çŽ°çŒźćŽżè…șéŠ…çŸĄćźȘ陷限çșżç›žćŽąé•¶éŠ™çź±è„„æč˜äčĄçż”ç„„èŻŠæƒłć“äș«éĄčć··æ©Ąćƒć‘è±Ąè§çĄéœ„ć‰Šć“źćšŁé”€æ¶ˆćź”æ·†æ™“"], -["d040","è €",13,"è ł",5,"è șè »è œè Ÿè żèĄèĄ‚èĄƒèĄ†",5,"èĄŽ",5,"èĄ•èĄ–èĄ˜èĄš",6,"èĄŠèĄ§èĄȘèĄ­èĄŻèĄ±èĄłèĄŽèĄ”èĄ¶èĄžèĄčèĄș"], -["d080","èĄ»èĄŒèą€èąƒèą†èą‡èą‰èąŠèąŒèąŽèąèąèą‘èą“èą”èą•èą—",4,"èą",4,"èąŁèą„",5,"ć°ć­æ Ąè‚–ć•žçŹ‘æ•ˆæ„”äș›æ­‡èŽéž‹ćæŒŸæșé‚Șæ–œèƒè°ć†™æą°ćžèŸčæ‡ˆæł„æł»è°ąć±‘è–ȘèŠŻé”ŒæŹŁèŸ›æ–°ćż»ćżƒäżĄèĄ…æ˜Ÿè…„çŒ©æƒșć…Žćˆ‘ćž‹ćœąé‚ąèĄŒé†’ćčžææ€§ć§“ć…„ć‡¶èƒžćŒˆæ±čé›„ç†ŠäŒ‘äżźçŸžæœœć—…é”ˆç§€èą–ç»ŁćąŸæˆŒéœ€è™šć˜˜éĄ»ćŸèźžè“„é…—ć™æ—­ćșç•œæ€ç”źć©żç»Șç»­èœ©ć–§ćźŁæ‚Źæ—‹çŽ„"], -["d140","èąŹèąźèąŻèą°èąČ",4,"èąžèąčèąșèą»èąœèąŸèążèŁ€èŁƒèŁ„èŁ‡èŁˆèŁŠèŁ‹èŁŒèŁèŁèŁèŁ‘èŁ“èŁ–èŁ—èŁš",4,"èŁ èŁĄèŁŠèŁ§èŁ©",6,"èŁČèŁ”èŁ¶èŁ·èŁșèŁ»èŁœèŁżè€€è€è€ƒ",5], -["d180","耉耋",4,"耑耔",4,"耜",4,"è€ąè€Łè€€è€Šè€§è€šè€©è€Źè€­è€źè€Żè€±è€Čè€łè€”è€·é€‰ç™Łçœ©ç»šéŽè–›ć­Šç©Žé›ȘèĄ€ć‹‹ç†ćŸȘæ—ŹèŻąćŻ»é©Żć·Ąæź‰æ±›èź­èźŻé€Šèż…ćŽ‹æŠŒéžŠéž­ć‘€äž«èŠœç‰™èšœćŽ–èĄ™æ¶Żé›…ć“‘äșšèź¶ç„‰ć’œé˜‰çƒŸæ·č盐䞄研蜒ćČ©ć»¶èš€éąœé˜Žç‚ŽæČżć„„æŽ©çœŒèĄæŒ”è‰łć °ç‡•ćŽŒç šé›ć”ćœŠç„°ćźŽè°šéȘŒæźƒć€źéžŻç§§æšæ‰ŹäœŻç–ĄçŸŠæŽ‹é˜łæ°§ä»°ç—’ć…»æ ·æŒŸé‚€è…°ćŠ–ç‘¶"], -["d240","耞",8,"脂脃脅",24,"è„ ",5,"è„§",19,"脌"], -["d280","脜脟芀节芄芅芇",26,"æ‘‡ć°§é„çȘ‘è°Łć§šć’Źèˆ€èŻèŠè€€æ€°ć™Žè€¶çˆ·é‡Žć†¶äčŸéĄ”æŽ–äžšć¶æ›łè…‹ć€œæ¶Č侀ćŁčćŒ»æ–é“±äŸäŒŠèĄŁéąć€·é—ç§»ä»Ș胰疑æČ‚ćźœć§šćœæ€…èšć€šć·Čäč™çŸŁä»„è‰ș抑易邑ć±čäșżćœč臆逞肄疫äșŠèŁ”æ„æŻ…ćż†äč‰ç›ŠæșąèŻŁèźźè°ŠèŻ‘ćŒ‚çżŒçżŒç»ŽèŒ”è«ć› æź·éŸłé˜Žć§»ćŸé“¶æ·«ćŻ…é„źć°čćŒ•éš"], -["d340","èŠą",30,"è§ƒè§è§“è§”è§•è§—è§˜è§™è§›è§è§Ÿè§ è§Ąè§ąè§€è§§è§šè§©è§Șè§Źè§­è§źè§°è§±è§Čè§Ž",6], -["d380","è§»",4,"蚁",5,"蚈",21,"ć°è‹±æš±ć©Žéč°ćș”猚èŽčè€è„è§è‡èżŽè”ąç›ˆćœ±éą–çĄŹæ˜ ć“Ÿæ‹„äœŁè‡ƒç—ˆćșžé›èžŠè›čć’æłłæ¶Œæ°žæżć‹‡ç”šćčœäŒ˜æ‚ ćż§ć°€ç”±é‚źé“€çŠčæČčæžžé…‰æœ‰ć‹ćłäœ‘é‡‰èŻ±ćˆćčŒèż‚æ·€äșŽç›‚æŠ†è™žæ„šèˆ†äœ™äżžé€Ÿé±Œæ„‰æžæž”éš…äșˆćš±é›šäžŽć±żçŠčćź‡èŻ­çŸœçŽ‰ćŸŸèŠ‹éƒćé‡ć–»ćłȘćŸĄæ„ˆæŹČ狱è‚ČèȘ‰"], -["d440","蚞",31,"èšż",8,"詉",21], -["d480","詟",25,"è©ș",6,"æ”ŽćŻ“èŁ•éą„è±«é©­éžłæžŠć†€ć…ƒćžŁèąćŽŸæŽèŸ•ć›­ć‘˜ćœ†çŒżæșçŒ˜èżœè‹‘æ„żæ€šé™ąæ›°çșŠè¶Šè·ƒé’„ćČłçČ€æœˆæ‚Šé˜…è€˜äș‘éƒ§ćŒ€é™šć…èżè•Žé…æ™•éŸ”ć­•ćŒç žæ‚æ œć“‰çŸćź°èœœć†ćœšć’±æ”’æš‚è”žè”ƒè„è‘Źé­çłŸć‡żè—»æžŁæ—©æŸĄèš€èșć™Șé€ çš‚ç¶ç‡„èŽŁæ‹©ćˆ™æłœèŽŒæ€Žćąžæ†Žæ›Ÿè” æ‰Žć–łæžŁæœ­èœ§"], -["d540","èȘ",7,"èȘ‹",7,"èȘ”",46], -["d580","諃",32,"é“Ąé—žçœšæ …æŠšć’‹äčç‚žèŻˆæ‘˜æ–‹ćź…çȘ„ć€șćŻšçž»æŻĄè©čçȘæČŸç›æ–©èŸ—ćŽ­ć±•è˜žæ ˆć æˆ˜ç«™æč›ç»œæšŸç« ćœ°æŒłćŒ æŽŒæ¶šæ–äžˆćžèŽŠä»—èƒ€ç˜Žéšœæ‹›æ˜­æ‰ŸæČŒè””ç…§çœ©ć…†è‚‡ćŹéźæŠ˜ć“Čè›°èŸ™è€…é”—è”—èż™æ”™çæ–ŸçœŸç”„ç §è‡»èŽžé’ˆäŸŠæž•ç–čèŻŠéœ‡æŒŻé•‡é˜”è’žæŒŁçćŸç‹°äș‰æ€”æ•Žæ‹Żæ­Łæ”ż"], -["d640","è«€",34,"èŹˆ",27], -["d680","èŹ€èŹ„èŹ§",30,"ćž§ç—‡éƒ‘èŻèŠæžæ”Żć±èœ˜çŸ„è‚ąè„‚æ±äč‹ç»‡èŒç›Žæ€æź–æ‰§ć€ŒäŸ„ć€æŒ‡æ­ąè¶ŸćȘæ—šçșžćż—æŒšæŽ·è‡łè‡Žçœźćžœćł™ćˆ¶æ™ș秩皚莚炙痔滞æČ»çȘ’äž­ç›…ćż é’ŸèĄ·ç»ˆç§è‚żé‡ä»ČäŒ—èˆŸć‘šć·žæŽČèŻŒçČ„èœŽè‚˜ćžšć’’çš±ćź™æ˜ŒéȘ€ç æ Ș蛛朱çŒȘèŻžèŻ›é€ç«čçƒ›ç…źæ‹„çž©ć˜±äž»è‘—æŸ±ćŠ©è›€èŽźé“žç­‘"], -["d740","譆",31,"è­§",4,"è­­",25], -["d780","èź‡",24,"èźŹèź±èź»èŻ‡èŻèŻȘè°‰è°žäœæłšç„é©»æŠ“çˆȘæ‹œäž“ç –èœŹæ’°è”šçŻ†æĄ©ćș„èŁ…ćŠ†æ’žćŁźçŠ¶æ€Žé”„èżœè”˜ć çŒ€è°†ć‡†æ‰æ‹™ć“æĄŒçąèŒé…Œć•„ç€çŒæ”Šć…čć’šè”„ć§żæ»‹æ·„ć­œçŽ«ä»”ç±œæ»“ć­è‡Șæžć­—éŹƒæŁ•èžȘćź—ç»Œæ€»çș”é‚čè”°ć„æç§Ÿè¶łć’æ—ç„–èŻ…é˜»ç»„é’»çș‚ć˜Žé†‰æœ€çœȘć°Šé”æ˜šć·ŠäœæŸžćšäœœććș§"], -["d840","è°ž",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"è±Ł",6,"è±Ź",6,"豎豔豶豷豻",6,"èȃèȄèȆèȇ"], -["d880","èȈèȋèȍ",6,"èȕèȖèȗèș",20,"äșäžŒć…€äžć»żć…äž•äș˜äžžéŹČ歏晩䞚çŠș便挕äč‡ć€­çˆ»ćźæ°ć›Ÿèƒ€éŠ—æŻ“çŸéŒ—äž¶äșŸéŒäčœäč©äș“èŠˆć­›ć•Źć˜ä»„ćŽćŽćŽŁćŽ„ćŽźé„è”ćŒšć”ćŒŠćŒźćŒŸè”œćŠćŁćˆ‚ćˆˆćˆŽćˆ­ćˆłćˆżć‰€ć‰Œć‰žć‰Ąć‰œè’Żć‰œćŠ‚ćŠćŠćŠ“ć†‚çœ”äș»ä»ƒä»‰ä»‚ä»šä»Ąä»«ä»žäŒ›ä»łäŒąäœ€ä»”䌄䌧䌉䌫䜞䜧攞䜚䜝"], -["d940","èČź",62], -["d980","èł­",32,"䜟䜗äŒČ䌜䜶䜎䟑䟉䟃䟏䜟䜻äŸȘäœŒäŸŹäŸ”äżŠäżšäżȘäż…äżšäżŁäżœäż‘äżŸäżžć€©ćŒäżłć€Źć€ć€źć€­äżŸć€œć€Œć€„ć€šćŸćƒć•ćˆćŽćŹć»ć‚„ć‚§ć‚©ć‚șćƒ–ć„†ćƒ­ćƒŹćƒŠćƒźć„‡ć„‹ä»æ°œäœ˜äœ„äżŽéŸ æ±†ç±Žć…źć·œé»‰éŠ˜ć†ć€”ć‹čćŒèš‡ćŒć‡«ć€™ć…•äș ć…–äșłèĄźèą€äș”è„”èŁ’çŠ€ćŹŽè ƒçŸžć†«ć†±ć†œć†Œ"], -["da40","莎",14,"莠蔑蔒蔗蔟蔄蔚蔩è”Șè”Źè”źè”Żè”±è”Č蔞",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"è¶ è¶Ą"], -["da80","è¶ąè¶€",12,"è¶Čè¶¶è¶·è¶čè¶»è¶œè·€è·è·‚è·…è·‡è·ˆè·‰è·Šè·è·è·’è·“è·”ć‡‡ć†–ć†ąć†„èź èźŠèź§èźȘèźŽèź”èź·èŻ‚èŻƒèŻ‹èŻèŻŽèŻ’èŻ“èŻ”èŻ–èŻ˜èŻ™èŻœèŻŸèŻ èŻ€èŻšèŻ©èŻźèŻ°èŻłèŻ¶èŻčèŻŒèŻżè°€è°‚è°„è°‡è°Œè°è°‘è°’è°”è°•è°–è°™è°›è°˜è°è°Ÿè° è°Ąè°„è°§è°Șè°«è°źè°Żè°Čè°łè°”è°¶ć©ćșé˜é˜ąé˜Ąé˜±é˜Șé˜œé˜Œé™‚é™‰é™”é™Ÿé™§é™Źé™Čé™Žéšˆéšéš—éš°é‚—é‚›é‚é‚™é‚Źé‚Ąé‚Žé‚łé‚¶é‚ș"], -["db40","è·•è·˜è·™è·œè· è·Ąè·ąè·„è·Šè·§è·©è·­è·źè·°è·±è·Č跎跶跌跟",6,"螆螇螈螋融螎螐螑螒螓螕",7,"èž èžĄèž€",4,"螫螭螰èžČèžłèžŽèž¶èž·èžžèž»èžŒèžŸ"], -["db80","èžżèčƒèč…èč†èčŒ",4,"èč“",5,"èčš",11,"èč§èčšèčȘèč«èčźèč±é‚žé‚°éƒéƒ…é‚Ÿéƒéƒ„éƒ‡éƒ“éƒŠéƒąéƒœéƒ—éƒ›éƒ«éƒŻéƒŸé„„é„ąé„žé„Łé„±é„Żé„čé…ƒé…†ćˆć„‚ćŠąćŠŹćŠ­ćŠŸć“żć‹ć‹–ć‹°ćŸç‡źçŸć»Žć‡”ć‡ŒéŹŻćŽ¶ćŒç•šć·ŻćŒćž©ćžĄćĄŸćąŒćŁ…ćŁ‘ćœ©ćœŹćœȘ朳ćœčćœźćœŻćœćœ»ć‚ć©ćž…ć«ćž†ćŒć»ćšć­ć¶ćłćž­ćž€ćžŒćžČćŸćž§ćžŽćž“ćž ćŸ•ćŸ˜ćŸšćŸ™ćŸ’ćžžćŸŽćŸŻćŸžćŸ€ćŸ"], -["dc40","èčłèč”èč·",4,"èčœèčŸèș€èș‚èșƒèș„èș†èșˆ",6,"èș‘èș’èș“èș•",6,"èșèșŸ",11,"èș­èșźèș°èș±èșł",6,"èș»",7], -["dc80","軃",10,"軏",21,"ć ‹ć ćŸœćŸ­ć €ć žć ™ćĄ„ć  ćĄ„ćĄŹćąćą‰ćąšćą€éŠšéŒ™æ‡żè‰čè‰œè‰żèŠèŠŠèŠšèŠ„èŠŽèŠ‘èŠ—èŠ™èŠ«èŠžèŠŸèŠ°è‹ˆè‹Šè‹ŁèŠ˜èŠ·èŠźè‹‹è‹Œè‹èŠ©èŠŽèŠĄèŠȘèŠŸè‹„è‹ŽèŠ€è‹ĄèŒ‰è‹·è‹€èŒèŒ‡è‹œè‹Žè‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè‘è›èœèŒˆèŽ’èŒŒèŒŽèŒ±èŽ›èžèŒŻèè‡èƒèŸè€èŒ—è èŒ­èŒșèŒłèŠè„"], -["dd40","軄",62], -["dd80","茀",32,"èšèŒ›è©èŹèȘè­èźèŽ°èžèŽłèŽŽèŽ èŽȘ莓莜莅荌莶莩荜莞荻莘莞莚èŽșèŽŒèèè„è˜ć ‡è˜è‹èèœè–èœèžè‘è†è”èŸèèƒèžèčèȘè…è€èŠè°èĄè‘œè‘‘è‘šè‘™è‘łè’‡è’ˆè‘șè’‰è‘žèŒè‘†è‘©è‘¶è’Œè’Žè±è‘­è“è“è“è“Šè’œè““è“Šè’żè’șè“ è’Ąè’čè’Žè’—è“„è“Łè”Œç”è”žè“°è”č蔟è”ș"], -["de40","蜅",32,"èœȘèŸ€èŸŒèŸ’èŸèŸ èŸĄèŸąèŸ€èŸ„èŸŠèŸ§èŸȘèŸŹèŸ­èŸźèŸŻèŸČèŸłèŸŽèŸ”èŸ·èŸžèŸșèŸ»èŸŒèŸżèż€èżƒèż†"], -["de80","èż‰",4,"èżèż’èż–èż—èżšèż èżĄèżŁèż§èżŹèżŻèż±èżČèżŽèż”èż¶èżșèż»èżŒèżŸèżżé€‡é€ˆé€Œé€Žé€“é€•é€˜è•–è”»è“żè“Œè•™è•ˆè•šè•€è•žè•șçžąè•ƒè•Č蕻薀薚薇薏è•čè–źè–œè–…è–čè–·è–°è—“è—è—œè—żè˜§è˜…è˜©è˜–è˜Œć»ŸćŒˆć€Œć„è€·ć„•ć„šć„˜ćŒć°ąć°„ć°Źć°Žæ‰Œæ‰ȘæŠŸæŠ»æ‹Šæ‹šæ‹—æ‹źæŒąæ‹¶æŒč捋捃掭揶捱æșæŽŽæŽŽæ­æŽŹæŽŠæ©æŽźæŽŒæČæžæ æżæ„æžæŽæ‘’æ†æŽŸæ‘…æ‘æ‹æ›æ æŒæŠæĄæ‘žæ’„æ‘­æ’–"], -["df40","é€™é€œé€Łé€€é€„é€§",5,"逰",4,"逷é€čé€șé€œé€żé€éƒé…é†éˆ",4,"過達違遖遙遚遜",5,"遀遊遧適éȘ遫遏遯",4,"遶",6,"遟邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邀還邧邚邩邫邭é‚Čé‚·é‚Œé‚œé‚żéƒ€æ‘șæ’·æ’žæ’™æ’șæ“€æ“æ“—æ“€æ“ąæ”‰æ”„æ”źćŒ‹ćż’ç”™ćŒ‘ćŸć±ćœć©ćšć»ć’ć–ć†ć‘‹ć‘’ć‘“ć‘”ć‘–ć‘ƒćĄć‘—ć‘™ćŁćČć’‚ć’”ć‘·ć‘±ć‘€ć’šć’›ć’„ć‘¶ć‘Šć’ć“ć’­ć“‚ć’Žć“’ć’§ć’Šć““ć“”ć‘Čć’Łć“•ć’»ć’żć“Œć“™ć“šć“œć’©ć’Șć’€ć“ć“ć“žć”›ć“§ć” ć“œć””ć“łć”ąć”Łć”ć”‘ć”§ć”Șć•§ć–ć–”ć•‰ć•­ć•ć••ć”żć•ć”Œ"], -["e040","éƒ‚éƒƒéƒ†éƒˆéƒ‰éƒ‹éƒŒéƒéƒ’éƒ”éƒ•éƒ–éƒ˜éƒ™éƒšéƒžéƒŸéƒ éƒŁéƒ€éƒ„éƒ©éƒȘ郏郟郰郱éƒČ郳郔郶郷éƒčéƒșéƒ»éƒŒéƒżé„€é„é„ƒé„…",19,"鄚鄛鄜"], -["e080","é„é„Ÿé„ é„Ąé„€",10,"鄰é„Č",6,"é„ș",8,"é…„ć”·ć•–ć•”ć•¶ć•·ć”łć”°ć•œć–‹ć—’ć–ƒć–±ć–čć–ˆć–ć–Ÿć•Ÿć—–ć–‘ć•»ć—Ÿć–œć–Ÿć–”ć–™ć—Șć—·ć—‰ć˜Ÿć—‘ć—«ć—Źć—”ć—Šć—ć—„ć—Żć—„ć—Čć—łć—Œć—ć—šć—”ć—€èŸ”ć˜žć˜ˆć˜Œć˜ć˜€ć˜Łć—Ÿć˜€ć˜§ć˜­ć™˜ć˜čć™—ć˜Źć™ć™ąć™™ć™œć™Œć™”ćš†ć™€ć™±ć™«ć™»ć™Œćš…ćš“ćšŻć›”ć›—ć›ć›Ąć›”ć›«ć›čć›żćœ„ćœŠćœ‰ćœœćžćž™ćž”ćž‘ćž±ćž»ćžŒ"], -["e140","é……é…‡é…ˆé…‘é…“é…”é…•é…–é…˜é…™é…›é…œé…Ÿé… é…Šé…§é…šé…«é…­é…łé…ș酻酌醀",4,"醆醈醊醎醏醓",6,"醜",5,"醀",5,"醫醏醰醱é†Č醳醶醷醞é†č醻"], -["e180","醌",10,"釈釋釐釒",9,"針",8,"ćž·ćč„ćč”ćč›ćčžćčĄćȌć±șćȍćȐćȖćȈćȘćșćȑćȚćȜćČ”ćČąćČœćČŹćČ«ćȱćȣ況ćČ·ćł„ćł’ćł€ćł‹ćł„ćŽ‚ćŽƒćŽ§ćŽŠćŽźćŽ€ćŽžćŽ†ćŽ›ć”˜ćŽŸćŽŽćŽœć”Źć”›ć”Żć”ć”«ć”‹ć”Šć”©ć”Žć¶‚ć¶™ć¶è±łć¶·ć·…ćœłćœ·ćŸ‚ćŸ‡ćŸ‰ćŸŒćŸ•ćŸ™ćŸœćŸšćŸ­ćŸ”ćŸŒèĄąćœĄçŠ­çŠ°çŠŽçŠ·çŠžç‹ƒç‹ç‹Žç‹ç‹’ç‹šç‹Żç‹©ç‹Čç‹Žç‹·çŒç‹łçŒƒç‹ș"], -["e240","釩",62], -["e280","鈄",32,"ç‹»çŒ—çŒ“çŒĄçŒŠçŒžçŒçŒ•çŒąçŒčçŒ„çŒŹçŒžçŒ±ççç—ç çŹçŻçŸèˆ›ć€„éŁ§ć€€ć€‚é„Łé„§",5,"鄎鄷鄜銀銄銇銊銍銐銑銓銔銕ćș€ćș‘ćș‹ćș–ćș„ćș ćșčćș”ćșŸćșłè”“滒滑滛滚ć»Șè†șćż„ćż‰ćż–ćżæ€ƒćżźæ€„ćżĄćż€ćżŸæ€…æ€†ćżȘćż­ćżžæ€™æ€”æ€Šæ€›æ€æ€æ€©æ€«æ€Šæ€żæ€Ąæžæč恻æș恂"], -["e340","鉆",45,"鉔",16], -["e380","銆",7,"銏",24,"æȘæœæ‚–æ‚šæ‚­æ‚æ‚ƒæ‚’æ‚Œæ‚›æƒŹæ‚»æ‚±æƒæƒ˜æƒ†æƒšæ‚Žæ„ æ„Šæ„•æ„ŁæƒŽæ„€æ„Žæ„«æ…Šæ…”æ†Źæ†”æ†§æ†·æ‡”æ‡”ćżéšłé—©é—«é—±é—łé—”é—¶é—Œé—Ÿé˜ƒé˜„é˜†é˜ˆé˜Šé˜‹é˜Œé˜é˜é˜’é˜•é˜–é˜—é˜™é˜šäžŹçˆżæˆ•æ°”æ±”æ±œæ±ŠæČٿȅæČæČ”æČŒæ±šæ±©æ±Žæ±¶æČ†æČ©æłæł”æČ­æł·æłžæł±æł—æČČæł æł–æłșæł«æłźæČ±æł“æłŻæłŸ"], -["e440","銹",5,"銯",24,"鋉",31], -["e480","鋩",32,"æŽčæŽ§æŽŒæ”ƒæ”ˆæŽ‡æŽ„æŽ™æŽŽæŽ«æ”æŽźæŽ”æŽšæ”æ”’æ””æŽłæ¶‘æ”Żæ¶žæ¶ æ”žæ¶“æ¶”æ”œæ” æ”Œæ”Łæžšæ·‡æ·…æ·žæžŽæ¶żæ· æž‘æ·Šæ·æ·™æž–æ¶«æžŒæ¶źæž«æčźæč޿諿șȿ蟿ș†æč“æč”æžČæž„æč„滟æș±æș˜æ» æŒ­æ»ąæș„æș§æșœæș»æș·æ»—æșŽæ»æșæ»‚æșŸæœąæœ†æœ‡æŒ€æŒ•æ»čæŒŻæŒ¶æœ‹æœŽæŒȘ按挩柉柍柌朞æœČ朌æœșæż‘"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"é«æż‰æŸ§æŸčæŸ¶æż‚æżĄæżźæżžæż æżŻç€šç€Łç€›ç€čç€”ççžćź€ćź„ćź•ćź“ćź„ćźžç”ŻéȘžæŽćŻ€ćŻźè€°ćŻ°èč‡èŹ‡èŸ¶èż“èż•èż„èżźèż€èż©èżŠèżłèżšé€…é€„é€‹é€Šé€‘é€é€–é€Ąé€”é€¶é€­é€Żé„é‘é’ééšé˜éąé›æščéŽéœé‚‚é‚ˆé‚ƒé‚‹ćœćœ—ćœ–ćœ˜ć°»ć’«ć±ć±™ć­±ć±Łć±ŠçŸŒćŒȘćŒ©ćŒ­è‰ŽćŒŒéŹ»ć±źćŠćŠƒćŠćŠ©ćŠȘ抣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"é‹éŒéćŠ—ć§ŠćŠ«ćŠžćŠ€ć§’ćŠČćŠŻć§—ćŠŸćš…ćš†ć§ćšˆć§Łć§˜ć§č湌湉ćšČćšŽćš‘ćšŁćš“ć©€ć©§ć©Šć©•ćšŒć©ąć©”èƒŹćȘȘćȘ›ć©·ć©șćȘŸć««ćȘČć«’ć«”ćȘžć« ć«Łć«±ć«–ć«Šć«˜ć«œćŹ‰ćŹ—ćŹ–ćŹČćŹ·ć­€ć°•ć°œć­šć­„ć­łć­‘ć­“ć­ąé©”é©·é©žé©șé©żé©œéȘ€éȘéȘ…éȘˆéȘŠéȘéȘ’éȘ“éȘ–éȘ˜éȘ›éȘœéȘéȘŸéȘ éȘąéȘŁéȘ„éȘ§çșŸçșĄçșŁçș„çșšçș©"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"çș­çș°çșŸç»€ç»ç»‚ç»‰ç»‹ç»Œç»ç»”ç»—ç»›ç» ç»Ąç»šç»«ç»źç»Żç»±ç»Č猍绶ç»șç»»ç»ŸçŒçŒ‚çŒƒçŒ‡çŒˆçŒ‹çŒŒçŒçŒ‘çŒ’çŒ—çŒ™çŒœçŒ›çŒŸçŒĄ",6,"çŒȘçŒ«çŒŹçŒ­çŒŻ",4,"猔ćčșç•żć·›ç”Ÿé‚•çŽŽçŽ‘çŽźçŽąçŽŸçç‚ç‘çŽ·çŽłç€ç‰çˆç„ç™éĄŒçŠç©ç§çžçŽșçČ琏çȘ瑛琊琄琚琰琟琏"], -["e840","鐯",14,"鐿",43,"鑬鑭鑼鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铊铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑟璜璎璀璁璇璋璞璚璩璐璧瓒ç’șéŸȘéŸ«éŸŹæŒæ“æžæˆæ©æž„æž‡æȘæłæž˜æž§æ”æžšæžžæž­æž‹æ·æŒæŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æž”æŸšæžłæŸæ €æŸƒæžžæŸąæ ŽæŸæŸœæ Čæ łæĄ æĄĄæĄŽæĄąæĄ„æĄ€æąƒæ æĄ•æĄŠæĄæĄ§æĄ€æ ŸæĄŠæĄ‰æ ©æą”æąæĄŽæĄ·æą“æĄ«æŁ‚æ„źæŁŒæ€Ÿæ€ æŁč"], -["e940","é”§é”łé”œé•ƒé•ˆé•‹é••é•šé• é•źé•Žé•”é•·",7,"門",42], -["e980","閫",32,"æ€€æŁ°æ€‹æ€æ„—æŁŁæ€æ„±æ€čæ„ æ„‚æ„æŠ„æ„«æŠ€æŠ˜æ„žæ€Žæ§ŒæŠ‡æŠˆæ§ŽæŠ‰æ„Šæ„Łæ„čæŠ›æŠ§æŠ»æŠ«æŠ­æ§”æŠ±æ§æ§Šæ§ŸæŠ•æ§ æŠæ§żæšŻæ§­æš—æš˜æ©„æ§Č橄暟æȘ æ©æ©›æš”æȘŽæ©č暜暚橘橌æȘ‘æȘæȘ©æȘ—æȘ«çŒ·ç’æźæź‚æź‡æź„æź’æź“æźæźšæź›æźĄæźȘ蜫蜭蜱èœČèœłèœ”èœ¶èœžèœ·èœčèœș蜌蜟蟁蟂蟄蟇蟋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阏阭阯阰阷阞é˜čé˜ș队陁陃陊陎陏陑陒陓陖陗"], -["ea80","é™˜é™™é™šé™œé™é™žé™ é™Łé™„é™Šé™«é™­",4,"陳陾",12,"éš‡éš‰éšŠèŸèŸŽèŸèŸ˜èŸšè»Žæˆ‹æˆ—æˆ›æˆŸæˆąæˆĄæˆ„æˆ€æˆŹè‡§ç“Żç“Žç“żç”ç”‘ç”“æ”Žæ—źæ—Żæ—°æ˜Šæ˜™æČæ˜ƒæ˜•æ˜€ç‚…æ›·æ˜æ˜Žæ˜±æ˜¶æ˜”è€†æ™Ÿæ™”æ™æ™æ™–æ™Ąæ™—æ™·æš„æšŒæš§æšæšŸæ››æ›œæ›Šæ›©èŽČèŽłèŽ¶èŽ»èŽœè”€è”…è”†è”ˆè”‰è”‡è”è”•è”™è§‡è§Šè§‹è§Œè§Žè§è§è§‘ç‰źçŠŸç‰ç‰Šç‰Żç‰Ÿç‰żçŠ„çŠ‹çŠçŠçŠ’æŒˆæŒČ掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隹",7,"隱éšČ階隔隷隞éšșéš»éšżé›‚é›ƒé›ˆé›Šé›‹é›é›‘é›“é›”é›–",9,"雡",6,"雫"], -["eb80","雏雭雟雰雱é›Č雎雔雞é›șé›»é›Œé›œé›żéœ‚éœƒéœ…éœŠéœ‹éœŒéœéœ‘éœ’éœ”éœ•éœ—",4,"éœéœŸéœ æżæ“˜è€„æŻȘæŻłæŻœæŻ”æŻčæ°…æ°‡æ°†æ°æ°•æ°˜æ°™æ°šæ°Ąæ°©æ°€æ°Șæ°Čæ””æ••æ•«ç‰ç‰’ç‰–çˆ°è™ąćˆ–è‚Ÿè‚œè‚“è‚ŒæœŠè‚œè‚±è‚«è‚­è‚Žè‚·èƒ§èƒšèƒ©èƒȘ胛胂胄胙胍胗朐胝胫胱胎胭脍脎èƒČèƒŒæœ•è„’è±šè„¶è„žè„Źè„˜è„Čè…ˆè…Œè…“è…Žè…™è…šè…±è… è…©è…Œè…œè…­è…§ćĄćȘ”è†ˆè†‚è†‘æ»•è†Łè†Ș臌朊臊膻"], -["ec40","霡",8,"éœ«éœŹéœźéœŻéœ±éœł",4,"éœșéœ»éœŒéœœéœż",18,"é”é•é—é˜éšéœééŸéŁé€éŠé§éšéȘ",7], -["ec80","éČ靔靷",4,"靜",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"è‡è†ŠæŹ€æŹ·æŹčæ­ƒæ­†æ­™éŁ‘éŁ’éŁ“éŁ•éŁ™éŁšæźłćœ€æŻ‚è§łæ–éœ‘æ–“æ–Œæ—†æ—„æ—ƒæ—Œæ—Žæ—’æ—–ç‚€ç‚œç‚–ç‚ç‚»çƒ€ç‚·ç‚«ç‚±çƒšçƒŠç„ç„“ç„–ç„Żç„±ç…łç…œç…šç……ç…Č煊煾ç…șç†˜ç†łç†”ç†šç† ç‡ ç‡”ç‡§ç‡č爝爹灬焘煩ç†čæˆŸæˆœæ‰ƒæ‰ˆæ‰‰ç€»ç„€ç„†ç„‰ç„›ç„œç„“ç„šç„ąç„—ç„ ç„Żç„§ç„ș穅穊穚穧穳濑濐"], -["ed40","éžžéžŸéžĄéžąéž€",6,"鞏鞟鞰鞱鞳鞔",46], -["ed80","éŸ€éŸ„éŸšéŸź",4,"韎韷",23,"æ€Œææšæ§ææ™æŁæ‚«æ„†æ„æ…æ†©æ†æ‡‹æ‡‘æˆ†è‚€èżæČ“æł¶æ·ŒçŸ¶çŸžç €ç ‰ç —ç ˜ç ‘æ–«ç ­ç œç ç čç șç »ç Ÿç Œç „ç Źç Łç ©çĄŽçĄ­çĄ–çĄ—ç ŠçĄçĄ‡çĄŒçĄȘ籛籓籚籇籜籡籣çąČçąč繄磔磙磉磏çŁČç€…çŁŽç€“ç€€ç€žç€ŽéŸ›é»č黻黌盱眄眍ç›čçœ‡çœˆçœšçœąçœ™çœ­çœŠçœ”çœžçç‘ç‡çƒçšçš"], -["ee40","頏",62], -["ee80","顎",32,"çąç„çżçžçœçž€çžŒçž‘çžŸçž çž°çž”çžœç”ș畀畎畋畈畛ç•Čç•čç–ƒçœ˜çœĄçœŸè©ˆçœšçœŽçœ±çœč矁真盍盄è Čé’…é’†é’‡é’‹é’Šé’Œé’é’é’é’”é’—é’•é’šé’›é’œé’Łé’€é’«é’Ș钭钬钯钰é’Čé’Žé’¶",4,"é’Œé’œé’żé“„é“ˆ",6,"é“é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“ąé“€é“„é“§é“šé“Ș"], -["ef40","饯",5,"鱋鱎鱒鱕鱙鱣鱹",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飄飊飩",30,"铩铫铟铯铳铎铔铷é“čé“Œé“œé“żé”ƒé”‚é”†é”‡é”‰é”Šé”é”Žé”é”’",4,"锘锛锝锞锟锱é”Ș锫锩锏锱é”Čé”Žé”¶é”·é”žé”Œé”Ÿé”żé•‚é””é•„é•…é•†é•‰é•Œé•Žé•é•’é•“é•”é•–é•—é•˜é•™é•›é•žé•Ÿé•é•Ąé•ąé•€",8,"镯镱é•Č镳é”șçŸ§çŸŹé›‰ç§•ç§­ç§Łç§«çš†ć”‡çšƒçš‚çšžçš”"], -["f040","逈",4,"逎透逑",28,"逯",26], -["f080","鄊",9,"é„–",12,"鄀鄊鄳鄞é„č鄻鄟銂銃銉çščçš·ç©‘é»éŠ„ç©°çšˆçšŽçš“çš™çš€ç“žç“ ç”Źéž éžąéžš",4,"éžČ鞱鞶鞞鞷éžčéžș鞟éčéč‚éč„éč†éč‡éčˆéč‰éč‹éčŒéčŽéč‘éč•éč—éčšéč›éčœéčžéčŁéčŠ",6,"éč±éč­éčłç–’ç–”ç––ç– ç–ç–Źç–Łç–łç–Žç–žç—„ç–±ç–°ç—ƒç—‚ç—–ç—ç—Łç—šç—Šç—€ç—«ç—§ç˜ƒç—±ç—Œç—żç˜ç˜€ç˜…ç˜Œç˜—ç˜Šç˜„瘘瘕瘙"], -["f140","驌驎驚",10,"銊銧銩",47], -["f180","駙",32,"ç˜›ç˜Œç˜ąç˜ ç™€ç˜­ç˜°ç˜żç˜”ç™ƒç˜Ÿç˜łç™ç™žç™”ç™œç™–ç™«ç™ŻçżŠç«Šç©žç©čçȘ€çȘ†çȘˆçȘ•çȘŠçȘ çȘŹçȘšçȘ­çȘłèĄ€èĄ©èĄČèĄœèĄżèą‚èąąèŁ†èą·èąŒèŁ‰èŁąèŁŽèŁŁèŁ„èŁ±è€šèŁŒèŁšèŁŸèŁ°è€Ąè€™è€“è€›è€Šè€Žè€«è€¶è„è„Šè„»ç–‹èƒ„çšČçšŽçŸœè€’è€”è€–è€œè€ è€ąè€„è€Šè€§è€©è€šè€±è€‹è€”èƒè†èè’è©è±èŠƒéĄžéą€éąƒ"], -["f240","é§ș",62], -["f280","éšč",32,"éą‰éąŒéąéąéą”éąšéą›éąžéąŸéąĄéąąéą„éąŠè™è™”è™Źè™źè™żè™șè™Œè™»èššèšèš‹èšŹèšèš§èšŁèšȘ蚓蚩蚶蛄蚔蛎蚰èšșèš±èšŻè›‰è›èšŽè›©è›±è›Čè›­è›łè›èœ“è›žè›Žè›Ÿè›˜è›‘èœƒèœ‡è›žèœˆèœŠèœèœ‰èœŁèœ»èœžèœ„èœźèœšèœŸèˆèœŽèœ±èœ©èœ·èœżèž‚èœąèœèŸè»è è°èŒèźèž‹è“èŁèŒè€è™è„èž“èžŻèžšèŸ’"], -["f340","驚",17,"é©ČéȘƒéȘ‰éȘéȘŽéȘ”éȘ•éȘ™éȘŠéȘ©",6,"éȘČéȘłéȘŽéȘ”éȘčéȘ»éȘœéȘŸéȘżé«ƒé«„髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","é«é«žé« é«ąé«Łé«€é«„é«§é«šé«©é«Ș髏髟髰",8,"é«ș髌",6,"éŹ„éŹ…éŹ†èŸ†èžˆèž…èž­èž—èžƒèž«èŸ„èžŹèž”èžłèŸ‹èŸ“èžœèŸ‘èŸ€èŸŠèŸ›èŸȘèŸ èŸźè –è “èŸŸè Šè ›è Ąè č蠌猶眂眄眅舐ç«șç«œçŹˆçŹƒçŹ„çŹ•çŹŠçŹ«çŹç­‡çŹžçŹȘçŹ™çŹźçŹ±çŹ çŹ„çŹ€çŹłçŹŸçŹžç­˜ç­šç­…ç­”ç­Œç­ç­ ç­źç­»ç­ąç­Čç­±çźçźŠçź§çźžçźŹçźçźšçź…çźȘçźœçźąçź«çźŽçŻ‘çŻçŻŒçŻçŻšçŻ„çŻŠçŻȘç°ŒçŻŸçŻŒç°ç°–ç°‹"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鏠鏥鏹鏀",10,"鏰鏱鏳",7,"éŹœéŹŸéŹżé­€é­†é­Šé­‹é­Œé­Žé­é­’é­“é­•",5], -["f480","魛",32,"簟ç°Șç°Šç°žç±ç±€è‡Ÿèˆèˆ‚èˆ„è‡ŹèĄ„èˆĄèˆąèˆŁèˆ­èˆŻèˆšèˆ«èˆžèˆ»èˆłèˆŽèˆŸè‰„è‰‰è‰‹è‰è‰šè‰Ÿè‰šèĄŸèą…èąˆèŁ˜èŁŸè„žçŸçŸŸçŸ§çŸŻçŸ°çŸČ籌敉çȑçȝçȜçȞçČąçČČçČŒçČœçłçł‡çłŒçłçłˆçł…çł—çłšè‰źæššçŸżçżŽçż•çż„çżĄçżŠçż©çżźçżłçłžç”·ç¶Šç¶źçč‡çș›éșžéșŽè”łè¶„趔趑趱蔧蔭豇豉酊酐酎酏酀"], -["f540","é­Œ",62], -["f580","éź»",32,"é…ąé…Ąé…°é…©é…Żé…œé…Ÿé…Č酮é…č醌醅醐醍醑醱醣é†Ș醭醟醯醔醎é†ș豕éčŸè¶žè·«èž…èč™èč©è¶”è¶żè¶Œè¶șè·„è·–è·—è·šè·žè·Žè·è·›è·†è·Źè··è·žè·Łè·čè·»è·€èž‰è·œèž”èžèžŸèžŹèžźèžŁèžŻèžșèč€èžč螔螜螱èč‰èčèč‚èč‘èč’èčŠèč°èč¶èčŒèčŻèčŽèș…èșèș”èșèșœèșžè±žèȂèȊèȅèȘèČ”æ–›è§–è§žè§šè§œ"], -["f640","鯜",62], -["f680","鰛",32,"è§„è§«è§ŻèšŸèŹŠé“é›©é›łé›Żéœ†éœéœˆéœéœŽéœȘ霭霰霟韀韃韅",5,"韌黟錋錍éščéšŒéšœé›Žé›’çžżé› éŠŽéŠźé‹ˆéŒŸéȘéŠéŽéŸé‘«é±żéȂéȅéȆéȇéȈ皣éȋéȎéȐéȑéȒéȔéȕéȚéțéȞ",5,"éČ„",4,"éČ«éČ­éČźéȰ",7,"éČșéČ»éČŒéČœéł„éł…éł†éł‡éłŠéł‹"], -["f740","é°Œ",62], -["f780","鱻鱜鱟éȀéȃéȄéȉéȊéȌéȏéȓéȖéȗéȘéșéȝéČȘéČŹéČŻéČčéČŸ",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"éł“éł”éł•éł—éł˜éł™éłœéłéłŸéłąéŒéž…éž‘éž’éž”éžŻéž«éžŁéžČ鞮éȘ±éȘ°éȘ·éč˜éȘ¶éȘșéȘŒé«é«€é«…é«‚é«‹é«Œé«‘é­…é­ƒé­‡é­‰é­ˆé­é­‘éŁšé€é€źé„•é„”é«Ÿé«Ąé«Šé«Żé««é«»é«­é«č鬈鬏鬓鬟鬣éșœéșŸçž»éș‚éș‡éșˆéș‹éș’鏖éșéșŸé»›é»œé»é» é»Ÿé»ąé»©é»§é»„é»Șé»ŻéŒąéŒŹéŒŻéŒč錷錜錟霄"], -["f840","鳣",62], -["f880","鎹",32], -["f940","锃",62], -["f980","鶂",32], -["fa40","é¶Ł",62], -["fa80","é·ą",32], -["fb40","鞃",27,"éž€éž§éžźéž°éžŽéž»éžŒéč€éčéčéč’éč“éč”éč–éč™éčéčŸéč éčĄéčąéč„éčźéčŻéčČéčŽ",9,"éș€"], -["fb80","éșéșƒéș„éș…éș†éș‰éșŠéșŒ",5,"éș”",8,"éșžéș ",5,"éș§éșšéș©éșȘ"], -["fc40","éș«",8,"éș”éș¶éș·éșčéșșéșŒéșż",4,"é»…é»†é»‡é»ˆé»Šé»‹é»Œé»é»’é»“é»•é»–é»—é»™é»šé»žé»Ąé»Łé»€é»Šé»šé»«é»Źé»­é»źé»°",8,"é»șé»œé»ż",6], -["fc80","錆",4,"錌錏錑錒錔錕錖錘錚",5,"éŒĄéŒŁ",8,"éŒ­éŒźéŒ°éŒ±"], -["fd40","éŒČ",4,"錞éŒșéŒŒéŒż",4,"霅",10,"霒",38], -["fd80","éœč",5,"韁韂韍",11,"éŸœéŸéŸžéŸĄ",4,"ï€Źï„č裏隣"], -["fe40","ïšŒïšïšŽïšïš‘ïš“ïš”ïš˜ïšŸïš ïšĄïšŁïš€ïš§ïššïš©"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json deleted file mode 100644 index 2022a00..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json +++ /dev/null @@ -1,273 +0,0 @@ -[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"ê°˜ê°žê°Ÿê°Ąê°ąê°Łê°„",6,"ê°źê°Čê°łê°Ž"], -["8161","갔갶갷ê°șê°»ê°œê°Ÿê°żê±",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"ê±Čê±łê±”ê±¶ê±čê±»",4,"êȂêȇêȈêȍêȎêȏêȑêȒêȓêȕ",6,"êȞêČą",5,"êČ«êČ­êČźêȱ",6,"êČșêČŸêČżêł€êł‚êłƒêł…êł†êł‡êł‰êłŠêł‹êł",7,"êł–êł˜",7,"êłąêłŁêł„êłŠêł©êł«êł­êłźêłČêłŽêł·",4,"êłŸêłżêŽêŽ‚êŽƒêŽ…êŽ‡",4,"ꎎꎐꎒꎓ"], -["8241","êŽ”êŽ•êŽ–êŽ—êŽ™êŽšêŽ›êŽêŽžêŽŸêŽĄ",7,"êŽȘêŽ«êŽź",5], -["8261","ꎶꎷêŽčêŽșꎻꎜ",6,"ꔆꔈꔊ",5,"ꔑꔒꔓꔕꔖꔗ"], -["8281","ê”™",7,"ê”ąê”€",7,"ê”źê”Żê”±ê”Čꔷꔞê”čê”șꔟ궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"ê¶„",17,"ê¶ž",7,"귂귃귅귆귇귉",6,"귒귔",7,"ê·ê·žê·Ÿê·Ąê·ąê·Łê·„",18], -["8341","ê·ș귻규귟Ꞃ",5,"꞊ꞌꞎ",5,"êž•",7], -["8361","ꞝ",18,"êžČêžłêž”êž¶êžčꞻꞌ"], -["8381","êžœêžŸêžżêč‚êč„êč‡êčˆêč‰êč‹êčêč‘êč’êč“êč•êč—",4,"êčžêčąêčŁêč€êčŠêč§êčȘêč«êč­êčźêčŻêč±",6,"êčșêčŸ",5,"êș†",5,"êș",46,"êșżê»ê»‚껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껊껧껩ê»Șê»Źê»ź",5,"껔껶껷ê»čê»ș껻껜",8], -["8461","ꌆꌉꌊꌋꌌꌎꌏꌑ",18], -["8481","ꌀ",7,"êŒźêŒŻêŒ±êŒłêŒ”",6,"ꌟ꜀꜄꜅꜆꜇꜊",5,"꜑",10,"ꜞ",5,"꜊",18,"êœș",5,"ꟁꟂꟃꟅꟆꟇꟉ",6,"꟒ꟓ꟔Ꟗ",5,"꟝",26,"êŸșꟻꟜ꟟"], -["8541","êŸżêż",5,"êżŠêżŒêż",4,"êż•",6,"êż",4], -["8561","êżą",5,"êżȘ",5,"êżČêżłêż”êż¶êż·êżč",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"ëŸëżë‚ë‚‚ë‚ƒë‚…",6,"낎낐낒",5,"ë‚›ë‚ë‚žë‚Łë‚€"], -["8641","낄낊낧ë‚Ș낰ë‚Č낶낷ë‚čë‚ș낻난",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냥냹냣냀냊",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넊넧넩ë„Ș넫넭",6,"넶ë„ș",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"ë…șë…»ë…œë…Ÿë…żë†ë†ƒ",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","ë†č",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"ë‡Ș뇫뇭뇟뇯뇱",7,"ë‡ș뇌뇟",5,"눆눇눉눊눍",6,"눖눘눚",5,"눥",18,"눔",6,"눜",26,"뉙뉚뉛뉝뉞뉟뉡",6,"ë‰Ș",4], -["8841","뉯",4,"뉶",5,"뉜",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늹늀늧늚늩늫늭늟늯늱ëŠČ늳는늶늷"], -["8881","늾",15,"닊닋닍닎닏닑닓",4,"ë‹šë‹œë‹žë‹Ÿë‹ ë‹Ąë‹Łë‹§ë‹©ë‹Ș닰닱ë‹Č닶닌닜닟댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덱덣"], -["8941","덊덚ëȘ덬덭덯ëČëłë”ë¶ë·ëč",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎱",5,"뎩ëŽȘ뎫뎭"], -["8981","뎼",21,"ë†ë‡ë‰ëŠëëë‘ë’ë“ë–ë˜ëšëœëžëŸëĄëąëŁë„ëŠë§ë©",18,"돜",18,"됑",6,"됙됚됛됝됞됟됡",6,"ëȘ됏",7,"됔",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둹둀둊"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"ë’„ë’Šë’§ë’©ë’Ș뒫뒭",7,"ë’¶ë’žë’ș",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"ë“žë“Ÿë“Ąë“ąë“„ë“§",4,"듼듰ë“Č",5,"ë“č",26,"딖딗딙딚딝"], -["8b41","딞",5,"딊딫",4,"ë”Č딳디딶딷ë”č",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땱",8], -["8b81","땫",52,"ë–ąë–Łë–„ë–Šë–§ë–©ë–Źë–­ë–źë–Żë–Č떶",4,"ë–Ÿë–żë—ë—‚ë—ƒë—…",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똊",5,"똭",6,"똔",5], -["8c81","똻",12,"뙉",26,"뙄뙊뙧뙩",50,"ëšžëšŸëšĄëšąëšŁëš„",5,"뚭뚼뚯뚰ëšČ",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱ë›Č뛳뛔뛶뛷ë›čë›ș"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"ëœȘëœ«ëœ­ëœźëœ±",6,"ëœș뜌",7,"띅띆띇띉띊띋띍",6,"띖",9,"ëĄëąëŁë„ëŠë§ë©",6,"ëČ띎띶",5,"ëŸëżëžëž‚ëžƒëž…",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"ëžȘ랼",5,"랶랷ëžč",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"ëŸźëŸŻëŸ±ëŸČëŸłëŸ”",6,"럟렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"ë Šë §ë ©ë Șë «ë ­",6,"ë ¶ë ș",5,"롁롂롃롅",11,"롒롔",7,"ëĄžëĄŸëĄĄëĄąëĄŁëĄ„",6,"륟륰ëĄČ",5,"ëĄčëĄșëĄ»ëĄœ",7], -["8f41","뱅",7,"뱎",17], -["8f61","ëą ",7,"ëą©",6,"ëą±ëąČ빳빔빶빷ëąč",4], -["8f81","ëąŸëążëŁ‚ëŁ„ëŁ†",5,"룍룎룏룑룒룓룕",7,"룞룠룱",5,"ëŁȘ룫룭룟룯룱",6,"ëŁșëŁŒëŁŸ",5,"뀅",18,"뀙",6,"뀥",26,"ë€Ÿë€żë„ë„‚ë„ƒë„…",6,"넍넎널넒",5], -["9041","ë„šë„›ë„ë„žë„Ÿë„Ą",6,"ë„Ș넏넟",5,"ë„¶ë„·ë„čë„ș넻넜"], -["9061","넟",5,"멆멈멋멌멏",15], -["9081","멟",12,"늟늯늱ëŠČ늳는",6,"늟맀맂",5,"맊맋맍맓",4,"ë§šë§œë§Ÿë§ ë§ąë§Šë§§ë§©ë§Șë§«ë§­",6,"ë§¶ë§»",4,"빂",5,"빉",11,"빖",33,"ëšșëš»ëšœëšŸëšżë©ë©ƒë©„ë©…ë©†"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멊ë©Ș",5], -["9161","ë©Č멳메멶멷ë©č",9,"ëȘ†ëȘˆëȘ‰ëȘŠëȘ‹ëȘ",5], -["9181","ëȘ“",20,"ëȘȘëȘ­ëȘźëȘŻëȘ±ëȘł",4,"ëȘșëȘŒëȘŸ",5,"뫅뫆뫇뫉",14,"뫚",33,"ë«œë«Ÿë«żëŹëŹ‚ëŹƒëŹ…",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","돚ëŹȘ돏",7,"돷ëŹčëŹș돿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"ë­ąë­€",7,"ë­­",4], -["9281","ë­Č",21,"뼉뼊뼋뼍뼎뼏뼑",18,"럄럊럧럩ëźȘ럫럭",6,"럔럶럞",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"ëŻșëŻ»ëŻœëŻŸë°"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡백밣방밹ë°Șë°«ë°Źë°źë°Żë°Čë°łë°”"], -["9361","ë°¶ë°·ë°č",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"ëȆëȇëȉëȊëȍëȏ",4,"ëȖëȘëț",4,"ëČąëČŁëČ„ëČŠëČ©",6,"ëČČëȶ",5,"ëČŸëȿ볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"ëł·ëłčëłșëł»ëłœ"], -["9441","ëłŸ",5,"뮆뮈뮊",5,"뮑뮒뮓뮕",8], -["9461","뮞",5,"뎄",6,"뎭",12], -["9481","ëŽș",5,"딁",6,"딊딋딍딎딏딑",6,"딚",9,"딄딊딧딩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"ë¶„",10,"ë¶±",6,"ë¶č",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"ë·Ș",5,"ë·±"], -["9561","ë·Č뷳뷔뷶뷷ë·č",6,"뾁뾂뾄뾆",5,"뾎뾏뾑뾒뾓"], -["9581","뾕",6,"뾞뾠",35,"ëč†ëč‡ëč‰ëčŠëč‹ëčëč",4,"ëč–ëč˜ëčœëčëčžëčŸëčąëčŁëč„ëčŠëč§ëč©ëč«",4,"ëčČëč¶",4,"ëčŸëčżëșëș‚ëșƒëș…",6,"ëșŽëș’",5,"ëșš",13,"ëș©",14], -["9641","ëșž",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻥뻹뻊",5,"ë»­",8], -["9681","ë»¶",10,"댂",5,"댊",13,"댚댞",33,"뜂뜃뜅뜆뜇뜉",6,"뜒뜓뜔뜖",44], -["9741","럃",16,"럕",8], -["9761","럞",17,"럱",7], -["9781","ëŸč",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿱",89,"ì€œì€Ÿì€ż"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","ììžìŸìĄ",6,"ìȘ",15], -["9881","ìș",21,"삒삓삕삖삗삙",6,"ì‚ąì‚€ì‚Š",5,"ì‚źì‚±ì‚Č삷",4,"삟샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샊샧샩ìƒȘ샫샭",6,"샶샞ìƒș",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"ì„Ąì„ąì„„ì„šì„©ì„Șì„«ì„ź"], -["9941","ì„Čì„łì„Žì„”ì„·ì„șì„»ì„œì„Ÿì„żì…",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"ì…Šì…Ș",5,"셱ì…Čì…łì…”ì…¶ì…·ì…čì…ș셻"], -["9981","ì…Œ",8,"솆",5,"솏솑솒솓솕솗",4,"ì†žì† ì†ąì†Łì†€ì†Šì†§ì†Șì†«ì†­ì†źì†Żì†±",11,"솟",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"ì‡Ąì‡ąì‡Łì‡„ì‡Šì‡§ì‡©",6,"ì‡Č쇎",7,"ì‡Ÿì‡żìˆìˆ‚ìˆƒìˆ…",6,"숎숐숒",5,"ìˆšìˆ›ìˆìˆžìˆĄìˆąìˆŁ"], -["9a41","숀숄숊숧ìˆȘìˆŹìˆźìˆ°ìˆłìˆ”",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"ì‰Ąì‰ąì‰Łì‰€ì‰Š"], -["9a81","쉧",4,"ì‰źì‰Żì‰±ì‰Čì‰łì‰”",6,"쉟슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슊슧슩ìŠȘìŠ«ìŠź",5,"슶슞ìŠș",33,"ì‹žì‹Ÿì‹Ąì‹ąì‹„",5,"ì‹źì‹°ì‹Čì‹łì‹Žì‹”ì‹·ì‹șì‹œì‹Ÿì‹żìŒ",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌊쌧ìŒȘ",8], -["9b61","ìŒł",17,"썆",7], -["9b81","썎",25,"ìȘì«ì­ìźìŻì±ìł",4,"ìș썻썟",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","ì›ììžìĄìŁ",4,"ìȘì«ìŹìź",5,"쏶쏷ìč",5], -["9c61","ìż",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐄",6,"ì­ìźìŻì±ìČìłì”",6,"쐟",9,"쑉",26,"쑊쑧쑩ì‘Ș쑫쑭",6,"쑶쑷쑞ì‘ș",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","ì’Ș",13,"ì’čì’ș쒻쒜",8], -["9d61","쓆",25], -["9d81","쓠",8,"ì“Ș",5,"ì“Čì“łì“”ì“¶ì“·ì“č쓻쓌쓜쓟씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"ì”Șì”«ì”­ì”źì”Żì”±",6,"ì”ș씌씟",5,"ì•†ì•‡ì•‹ì•ì•ì•‘ì•’ì•–ì•šì•›ì•œì•Ÿì•ąì•Łì•„ì•Šì•§ì•©",6,"ì•Č앶",5,"ì•Ÿì•żì–ì–‚ì–ƒì–…ì–†ì–ˆì–‰ì–Šì–‹ì–Žì–ì–’ì–“ì–”"], -["9e41","ì––ì–™ì–šì–›ì–ì–žì–Ÿì–Ą",7,"ì–Ș",9,"얶"], -["9e61","얷ì–șì–ż",4,"엋엍엏엒엓엕엖엗엙",6,"ì—ąì—€ì—Šì—§"], -["9e81","ì—šì—©ì—Șì—«ì—Żì—±ì—Čì—łì—”ì—žì—čì—ș엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옊옧옩ì˜Șì˜«ì˜Żì˜±ì˜Č옶옞ì˜șì˜Œì˜œì˜Ÿì˜żì™‚ì™ƒì™…ì™†ì™‡ì™‰",6,"왒왖",5,"ì™žì™Ÿì™Ą",10,"ì™­ì™źì™°ì™Č",5,"ì™șì™»ì™œì™Ÿì™żìš",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욊"], -["9f41","ìššìšȘ",5,"ìšČìšłìš”ìš¶ìš·ìš»",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"ì›žì›Ÿì›ą",5,"ì›Șì›«ì›­ì›źì›Żì›±ì›Č"], -["9f81","ì›ł",4,"ì›ș웻워웟",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"ìœąìœŁìœ„ìœŠìœ§ìœ©",6,"ìœČ윎윶윞ìœčìœșìœ»ìœŸìœżìì‚ìƒì…",4,"ì‹ìŽìì™ìšì›ììžìŸìĄ",6,"읩ìȘìŹ",7,"읶읷ìčìșì»ìżìž€ìžìž‚ìž†ìž‹ìžŒìžìžìž’ìž“ìž•ìž™ìž›",4,"ìžąìž§",4,"ìžźìžŻìž±ìžČìžłìž”ìž¶ìž·"], -["a041","ìžžìžčìžș잻잟쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟄쟊쟧쟩ìŸȘ쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"ì žì Ÿì Ąì ąì Łì „",6,"ì źì °ì Č",5,"ì čì șì »ì œì Ÿì żìĄ",6,"ìĄŠìĄ‹ìĄŽ",5,"ìĄ•",26,"ìĄČìĄłìĄ”ìĄ¶ìĄ·ìĄčìĄ»",4,"ìą‚ìą„ìąˆìą‰ìąŠìąŽ",5,"ìą•",7,"ìąžìą ìąąìąŁìą€"], -["a141","ìą„ìąŠìą§ìą©",18,"ìąŸìążìŁ€ìŁ"], -["a161","ìŁ‚ìŁƒìŁ…ìŁ†ìŁ‡ìŁ‰ìŁŠìŁ‹ìŁ",6,"ìŁ–ìŁ˜ìŁš",5,"ìŁąìŁŁìŁ„"], -["a181","ìŁŠ",14,"ìŁ¶",5,"ìŁŸìŁżì€ì€‚ì€ƒì€‡",4,"ì€Žă€€ă€ă€‚Â·â€„â€ŠÂšă€ƒÂ­â€•âˆ„ïŒŒâˆŒâ€˜â€™â€œâ€ă€”ă€•ă€ˆ",9,"Â±Ă—Ă·â‰ â‰€â‰„âˆžâˆŽÂ°â€Čâ€łâ„ƒâ„«ïż ïżĄïż„â™‚â™€âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’Â§â€»â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Čâ–œâ–Œâ†’â†â†‘â†“â†”ă€“â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹâˆˆâˆ‹âŠ†âŠ‡âŠ‚âŠƒâˆȘâˆ©âˆ§âˆšïżą"], -["a241","쀐쀒",5,"쀙",18], -["a261","쀭",6,"쀔",18], -["a281","섈",7,"ì„’ì„“ì„•ì„–ì„—ì„™",6,"ì„ąì„€",7,"ì„­ì„źì„Żâ‡’â‡”âˆ€âˆƒÂŽïœžË‡Ë˜ËËšË™ÂžË›ÂĄÂżËâˆźâˆ‘âˆÂ€â„‰â€°â—â—€â–·â–¶â™€â™ â™Ąâ™„â™§â™ŁâŠ™â—ˆâ–Łâ—â—‘â–’â–€â–„â–šâ–§â–Šâ–©â™šâ˜â˜Žâ˜œâ˜žÂ¶â€ â€Ąâ†•â†—â†™â†–â†˜â™­â™©â™Ș♬㉿㈜№㏇ℱ㏂㏘℡€¼"], -["a341","성ì„Čì„łì„”",6,"서",10,"슊슋슍슎슏"], -["a361","슑",6,"슚슜슞",16], -["a381","ìŠŻ",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛",58,"ïżŠïŒœ",32,"ïżŁ"], -["a441","ì§žì§Ÿì§Ąì§Łì§„ì§Šì§šì§©ì§Șì§«ì§źì§Č",5,"ì§șì§»ì§œì§Ÿì§żìšìš‚ìšƒìš„"], -["a461","욅욆욇욊욎",5,"욕욖욗욙",12], -["a481","욊욧욚ìšȘ",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"ì©žì©ą",5,"ì©©ì©Ș"], -["a561","ì©«",17,"쩟",5,"ìȘ…ìȘ†"], -["a581","ìȘ‡",16,"ìȘ™",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"ÎŁ",6], -["a5e1","α",16,"σ",6], -["a641","ìȘš",19,"ìȘŸìȘżì«ì«‚쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"ì«Ą",6], -["a681","쫚쫩ì«Șì««ì«­",6,"ì«”",18,"ìŹ‰ìŹŠâ”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚â”’â”‘â”šâ”™â”–â”•â”Žâ”â”žâ”Ÿâ”Ąâ”ąâ”Šâ”§â”©â”Ș┭┟┱â”Č└┶â”čâ”ș├┟╀╁╃",7], -["a741","ìŹ‹",4,"ìŹ‘ìŹ’ìŹ“ìŹ•ìŹ–ìŹ—ìŹ™",6,"ìŹą",7], -["a761","ìŹȘ",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"ì­„",7,"ăŽ•ăŽ–ăŽ—â„“ăŽ˜ă„ăŽŁăŽ€ăŽ„ăŽŠăŽ™",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎹㎰",9,"㎀",4,"ăŽș",5,"㎐",4,"â„Šă€ăăŽŠăŽ‹ăŽŒă–ă…ăŽ­ăŽźăŽŻă›ăŽ©ăŽȘăŽ«ăŽŹăăă“ăƒă‰ăœă†"], -["a841","ì­­",10,"ì­ș",14], -["a861","ìź‰",18,"ìź",6], -["a881","ìź€",19,"ìźč",11,"ÆÐÂȘÄŠ"], -["a8a6","ÄČ"], -["a8a8","ĿƁ؃ÂșÞƩƊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"œ⅓⅔ŒŸ⅛⅜⅝⅞"], -["a941","ìŻ…",14,"ìŻ•",10], -["a961","ìŻ ìŻĄìŻąìŻŁìŻ„ìŻŠìŻšìŻȘ",18], -["a981","ìŻœ",14,"찎찏찑찒찓찕",6,"ì°žì°Ÿì° ì°Łì°€ĂŠÄ‘Ă°Ä§Ä±ÄłÄžĆ€Ć‚ĂžĆ“ĂŸĂŸĆ§Ć‹Ć‰ăˆ€",27,"⒜",25,"⑮",14,"ÂčÂȳⁿ₁₂₃₄"], -["aa41","ì°„ì°Šì°Șì°«ì°­ì°Żì°±",6,"ì°șì°ż",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"ì±Ąì±ąì±Łì±„ì±§ì±©",6,"ì±±ì±Č"], -["aa81","ì±łì±Žì±¶",29,"ぁ",82], -["ab41","ìȔìȕìȖìȗìȚìțìȝìȞìȟìČĄ",6,"ìČȘìČź",5,"ìȶìČ·ìČč"], -["ab61","ìČșìČ»ìČœ",6,"ìł†ìłˆìłŠ",5,"ìł‘ìł’ìł“ìł•",5], -["ab81","ìł›",8,"ìł„",6,"ìł­ìłźìłŻìł±",12,"ァ",85], -["ac41","ìłŸìłżìŽ€ìŽ‚",5,"쎊쎋쎍쎎쎏쎑",6,"쎚쎜쎞쎟쎠"], -["ac61","ìŽĄìŽąìŽŁìŽ„ìŽŠìŽ§ìŽ©ìŽȘ쎫쎭",11,"ìŽș",4], -["ac81","ìŽż",28,"ì”ì”žì”ŸĐ",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","ì”Ąì”ąì”Łì”„",6,"ì”źì”°ì”Č",5,"ì”č",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","ì¶ ì¶Ąì¶ąì¶Łì¶Šì¶šì¶Ș",5,"ì¶±",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","ì·ą",5,"ì·©ì·Șì·«ì·­ì·źì·Żì·±",6,"ì·ș췌췟",4], -["ae81","잃입잆잇잉잊잋잍",6,"잕잖잗잘잚",5,"ìžąìžŁìž„ìžŠìž§ìž©ìžȘìž«"], -["af41","ìžŹìž­ìžźìžŻìžČ잎잶",19], -["af61","ìčŠ",13,"ìčšìč›ìčìčžìčą",5,"ìčȘìčŹ"], -["af81","ìčź",5,"ìč¶ìč·ìččìčșìč»ìčœ",6,"ìș†ìșˆìșŠ",5,"ìș’ìș“ìș•ìș–ìș—ìș™"], -["b041","ìșš",5,"ìșąìșŠ",5,"ìșź",12], -["b061","ìș»",5,"컂",19], -["b081","컖",13,"컊컧컩ì»Șì»­",6,"ì»¶ì»ș",5,"가각간갇갈갉갊감",7,"같",4,"ê° ê°€ê°Źê°­ê°Żê°°ê°±ê°žê°č갌걀걋걍걔걘걜거걱걎걷걞ê±șêȀêȁêȃêȄêȅêȆêȉêȊêȋêȌêȐêȔêȜêȝêȟêČ êČĄêČšêČ©êČȘêČŹêČŻêȰêČžêČčêČ»êČŒêČœêłêł„êłˆêłŒêł•êł—êł êłĄêł€êł§êłšêłȘêłŹêłŻêł°êł±êłłêł”êł¶êłŒêłœêŽ€êŽ„êŽ†"], -["b141","쌂쌃쌅쌆쌇쌉",6,"쌒쌔쌖",5,"ìŒìŒžìŒŸìŒĄìŒąìŒŁ"], -["b161","쌄",6,"ìŒźìŒČ",5,"ìŒč",11], -["b181","윅",14,"윖윗윙윚윛윝",6,"윊윚ìœȘìœ«ìœŹêŽŒêŽêŽêŽ‘êŽ˜êŽœêŽ êŽ©êŽŹêŽ­êŽŽêŽ”êŽžêŽŒê”„ê”…ê”‡ê”‰ê”ê””ê”˜ê”Ąê”Łê”Źê”­ê”°ê”łê”Žê””ê”¶ê”»ê”Œê”œê”żê¶ê¶‚ê¶ˆê¶‰ê¶Œê¶ê¶œê¶ê¶€ê¶·ê·€ê·ê·„ê·ˆê·ê·‘ê·“ê·œê· ê·€ê·žê·čê·Œê·żêž€êžêžˆêž‰êž‹êžêž”êž°êž±êžŽêž·êžžêžșêč€êčêčƒêč…êč†êčŠêčŒêčêčŽêčêč”êč–êčœêčêčŸêč êčĄêč„êčšêč©êčŹêč°êčž"], -["b241","ìœ­ìœźìœŻìœČìœłìœ”ìœ¶ìœ·ìœč",6,"쟁쟂쟃쟄쟆",5,"쟍"], -["b261","쟎",18,"ìŸą",5,"쟩"], -["b281","ìŸȘ",5,"쟱",18,"ìż…",6,"êččêč»êčŒêčœêș„êș…êșŒêșŒêșœêșŸê»€ê»„ê»Œê»ê»ê»ê»‘ê»˜ê»™ê»œê»šê»«ê»­ê»Žê»žê»ŒêŒ‡êŒˆêŒêŒêŒŹêŒ­êŒ°êŒČêŒŽêŒŒêŒœêŒżêœêœ‚êœƒêœˆêœ‰êœêœœêœêœ€êœ„êœčꟀꟄꟈꟐꟑꟕꟜ꟞êŸčêŸŒêż€êż‡êżˆêż‰êż‹êżêżŽêż”êżœêżšêż©êż°êż±êżŽêżžë€€ë€ë€„ë€Œë€ë€”ë€œë€ë€šë„ë…ëˆëŠëŒëŽë“ë”ë•ë—ë™"], -["b341","ìżŒ",19,"ìżąìżŁìż„ìżŠìż§ìż©"], -["b361","ìżȘ",5,"ìżČìżŽìż¶",5,"ìżœìżŸìżżí€í€‚í€ƒí€…",5], -["b381","퀋",5,"퀒",5,"퀙",19,"ëëŒëœë‚€ë‚„ë‚Œë‚ë‚ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚Ąë‚ąë‚šë‚©ë‚«",4,"ë‚±ë‚łë‚Žë‚”ë‚žë‚Œëƒ„ëƒ…ëƒ‡ëƒˆëƒ‰ëƒëƒ‘ëƒ”ëƒ˜ëƒ ëƒ„ë„ˆë„‰ë„‹ë„Œë„ë„’ë„“ë„˜ë„™ë„›ë„œë„ë„Łë„€ë„„ë„šë„Źë„Žë„”ë„·ë„žë„č녀녁년녈념녑녔녕녘녜녠녾ë…č녌놀놂놈놉놋농높놓놔놘놜놚뇌뇐뇔뇜뇝"], -["b441","퀼",5,"퀶퀷í€čí€ș퀻퀜",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큥",10,"큟큯"], -["b481","큱íČ큳큔",6,"íŸíżí‚€í‚‚",18,"ë‡Ÿë‡šë‡©ë‡Źë‡°ë‡čë‡»ë‡œëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆŽëˆŒë‰˜ë‰œë‰ ë‰šë‰©ë‰Žë‰”ë‰ŒëŠ„ëŠ…ëŠ‰ëŠëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠĄëŠŁëŠ„ëŠŠëŠȘëŠŹëŠ°ëŠŽë‹ˆë‹‰ë‹Œë‹ë‹’ë‹˜ë‹™ë‹›ë‹ë‹ąë‹€ë‹„ë‹Šë‹šë‹«",4,"닳닎닔닷",4,"ë‹żëŒ€ëŒëŒ„ëŒˆëŒëŒ‘ëŒ“ëŒ”ëŒ•ëŒœë”ë•ë–ë˜ë›ëœëžëŸë€ë„"], -["b541","킕",14,"킊킧킩í‚Ș킫킭",5], -["b561","킳킶킞í‚ș",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","íƒ›íƒžíƒŸíƒĄíƒąíƒŁíƒ„",6,"탟íƒČ",5,"íƒč",11,"ë§ë©ë«ëźë°ë±ëŽëžëŽ€ëŽëŽƒëŽ„ëŽ…ëŽŒëŽëŽ”ëŽ ëŽĄëŽšëŽŹë„ë…ëˆë‹ëŒëŽëë”ë•ë—ë™ë›ëë ë€ëšëŒëë˜ëœë ëšë©ë«ëŽë‘ë‘‘ë‘”ë‘˜ë‘ ë‘Ąë‘Łë‘„ë‘Źë’€ë’ˆë’ë’€ë’šë’Źë’”ë’·ë’čë“€ë“„ë“ˆë“ë“•ë“œë“ë“ ë“Łë“€ë“Šë“Źë“­ë“Żë“±ë“žë””ë”•ë”˜ë”›ë”œë”€ë”„ë”§ë”šë”©ë”Ș따딱딎딞"], -["b641","턅",7,"턎",17], -["b661","턠",15,"í„Č턳턔턶턷í„č턻턌턜턟"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텱",5,"텩í…Șí…«í…­ë•€ë•ë•ƒë•„ë•…ë•‹ë•Œë•ë•ë•”ë•œë•ë•Ÿë• ë•Ąë– ë–Ąë–€ë–šë–Șë–«ë–°ë–±ë–łë–Žë–”ë–»ë–Œë–œë—€ë—„ë—Œë—ë—ë—ë—‘ë—˜ë—Źë˜ë˜‘ë˜”ë˜˜ë˜„ë˜Źë˜Žë™ˆë™€ë™šëšœëšëš ëš€ëš«ëšŹëš±ë›”ë›°ë›Žë›žëœ€ëœëœ…ëœšëœ©ëœŹëœŻëœ°ëœžëœčëœ»ë„ëˆëŒë”ë•ë ë€ëšë°ë±ëłë”ëŒëœëž€ëž„ëžŒëžëžëžëž‘ëž’ëž–ëž—"], -["b741","텼",13,"í…œ",6,"톅톆톇톉톊"], -["b761","톋",20,"톹톣톄톊톧"], -["b781","톩",6,"í†Č톎톶톷톞í†čí†»í†œí†Ÿí†żí‡",14,"ëž˜ëž™ëžœëž ëžšëž©ëž«ëžŹëž­ëžŽëž”ëžžëŸ‡ëŸ‰ëŸŹëŸ­ëŸ°ëŸŽëŸŒëŸœëŸżë €ë ë ‡ë ˆë ‰ë Œë ë ˜ë ™ë ›ë ë €ë „ë šë Źë Žë ”ë ·ë žë čëĄ€ëĄ„ëĄ‘ëĄ“ëĄœëĄëĄ ëĄ€ëĄŹëĄ­ëĄŻëĄ±ëĄžëĄŒëąëąšëą°ëąŽëąžëŁ€ëŁëŁƒëŁ…ëŁŒëŁëŁ”ëŁëŁŸëŁĄëŁšëŁ©ëŁŹëŁ°ëŁžëŁčëŁ»ëŁœë€„ë€˜ë€ ë€Œë€œë„€ë„„ë„Œë„ë„‘ë„˜ë„™ë„œë„ ë„šë„©"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇔퇶퇷í‡č",13], -["b881","툈툊",5,"툑",24,"ë„«ë„­ë„Žë„”ë„žë„ŒëŠ„ëŠ…ëŠ‡ëŠ‰ëŠŠëŠëŠŽëŠŹëŠ­ëŠ°ëŠŽëŠŒëŠœëŠżë§ë§ˆë§‰ë§Œë§Ž",4,"ë§˜ë§™ë§›ë§ë§žë§Ąë§Łë§€ë§„ë§šë§Źë§Žë§”ë§·ë§žë§čë§ș빀빁빈빕빾ëšč뚌멀멂멈멉멋멍멎멓메멕멘멜멀멄멧멚멩며멱멎멞ëȘƒëȘ„ëȘ…ëȘ‡ëȘŒëȘšëȘ©ëȘ«ëȘŹëȘ°ëȘČëȘžëȘčëȘ»ëȘœë«„뫈뫘뫙뫌"], -["b941","íˆȘ툫툟툯툱íˆČ툳툔",6,"툟퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉄퉊퉧퉚"], -["b981","퉩",22,"íŠ‚íŠƒíŠ…íŠ†íŠ‡íŠ‰íŠŠíŠ‹íŠŒëŹ€ëŹ„ëŹëŹëŹ‘ëŹ˜ëŹœëŹ ëŹ©ëŹ«ëŹŽëŹ”ëŹ¶ëŹžëŹ»ëŹŒëŹœëŹŸë­„ë­…ë­‡ë­‰ë­ë­ë­ë­”ë­˜ë­Ąë­Łë­ŹëźˆëźŒëźëź€ëźšëźŹëźŽëź·ëŻ€ëŻ„ëŻˆëŻëŻ“ëŻžëŻčëŻŒëŻżë°€ë°‚ë°ˆë°‰ë°‹ë°Œë°ë°ë°‘ë°”",4,"받",4,"밀밄밧방밭배백밎밞뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝ëȄëȅëȈëȋëȌëȎëȔëȕëȗ"], -["ba41","튍튎튏튒튓튔튖",5,"íŠíŠžíŠŸíŠĄíŠąíŠŁíŠ„",6,"튭"], -["ba61","튼튯튰íŠČ",5,"íŠș튻튜튟틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틩",9,"í‹Č틳틔틶틷í‹čí‹șëșëȚëČ ëČĄëČ€ëȧëČšëȰëȱëČłëČŽëČ”ëČŒëČœëł€ëł„ëłëłëłëł‘ëł•ëł˜ëłœëłŽëł”ëł¶ëłžëłŒëŽ„ëŽ…ëŽ‡ëŽ‰ëŽëŽ”ëŽ€ëŽŹë”€ë”ˆë”‰ë”Œë”ë”˜ë”™ë”€ë”šë¶€ë¶ë¶„ë¶‡ë¶ˆë¶‰ë¶Šë¶ë¶‘ë¶“ë¶•ë¶™ë¶šë¶œë¶€ë¶°ë¶žë·”ë·•ë·˜ë·œë·©ë·°ë·Žë·žëž€ëžƒëž…ëžŒëžëžëž”ëžœëžëžŸëč„ëč…ëčˆëčŒëčŽëč”ëč•ëč—ëč™ëčšëč›ëč ëčĄëč€"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팱팣"], -["bb61","팀팊팧íŒȘíŒ«íŒ­íŒźíŒŻíŒ±",6,"íŒș팟",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"ëčšëčȘëč°ëč±ëčłëčŽëč”ëč»ëčŒëčœëș€ëș„ëșŒëșëșëșëș‘ëș˜ëș™ëșšë»ë»‘ë»”ë»—ë»˜ë» ë»Łë»€ë»„ë»ŹëŒëŒˆëŒ‰ëŒ˜ëŒ™ëŒ›ëŒœëŒëœ€ëœëœ„ëœˆëœëœ‘ëœ•ëŸ”ëŸ°ëż…ëżŒëżëżëż”ëżœëżŸëżĄì€Œì‘ì˜ìœì ìšì©ì‚ì‚‘ì‚”ì‚˜ì‚ ì‚Ąì‚Łì‚„ì‚Źì‚­ì‚Żì‚°ì‚łì‚Žì‚”ì‚¶ì‚Œì‚œì‚żìƒ€ìƒìƒ…ìƒˆìƒ‰ìƒŒìƒìƒ˜ìƒ™ìƒ›ìƒœìƒìƒ€"], -["bc41","íȘ",17,"íŸíżíŽíŽ‚íŽƒíŽ…íŽ†íŽ‡"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"íŽȘ펬펼"], -["bc81","펯",4,"펔펶펷íŽčíŽș펻펜",6,"폆폇폊",5,"폑",5,"ìƒ„ìƒšìƒŹìƒŽìƒ”ìƒ·ìƒč섀섄섈섐섕서",4,"ì„Łì„€ì„Šì„§ì„Źì„­ì„Żì„°ì„±ì„¶ì„žì„čì„Œì…€ì…ˆì…‰ì…‹ì…Œì…ì…”ì…•ì…˜ì…œì…€ì…„ì…§ì…šì…©ì…°ì…Žì…žì†…ì†Œì†ì†Žì†ì†”ì†–ì†œì†ì†Ÿì†Ąì†„ì†šì†©ì†Źì†°ì†œì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡€ì‡šì‡°ì‡±ì‡łì‡Œì‡œìˆ€ìˆ„ìˆŒìˆìˆìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆšìˆ©ìˆ«ìˆ­"], -["bd41","폗폙",7,"íąí€",7,"íźíŻí±íČíłí”í¶í·"], -["bd61","폞íčíș폻폟퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"ìˆŻìˆ±ìˆČìˆŽì‰ˆì‰ì‰‘ì‰”ì‰˜ì‰ ì‰„ì‰Źì‰­ì‰°ì‰Žì‰Œì‰œì‰żìŠìŠˆìŠ‰ìŠìŠ˜ìŠ›ìŠìŠ€ìŠ„ìŠšìŠŹìŠ­ìŠŽìŠ”ìŠ·ìŠčì‹œì‹ì‹ ì‹Łì‹€ì‹«ì‹Źì‹­ì‹Żì‹±ì‹¶ì‹žì‹čì‹»ì‹ŒìŒ€ìŒˆìŒ‰ìŒŒìŒìŒ“ìŒ”ìŒ•ìŒ˜ìŒœìŒ€ìŒ„ìŒšìŒ©ì…ìšì©ìŹì°ìČ썞ìčìŒìœìŽ„ìŽˆìŽŒì€ì˜ì™ìœìŸì ìąìšì©ì­ìŽì”ìžìˆìì€ìŹì°"], -["be41","퐞",7,"푁푂푃푅",14], -["be61","푔",7,"í‘í‘ží‘Ÿí‘Ąí‘ąí‘Łí‘„",7,"푟푰푱í‘Č"], -["be81","푳",4,"í‘ș푻표푟풁풃",4,"풊풌풎",5,"풕",8,"ìŽìŒìœì‘ˆì‘€ì‘„ì‘šì‘Źì‘Žì‘”ì‘č쒀쒔쒜쒞쒌쓩쓰쓱쓎쓞ì“șì“żì”€ì”ì”Œì”ì””ì”œì”šì”©ì”Źì”°ì”žì”čì”»ì”œì•„ì•…ì•ˆì•‰ì•Šì•Œì•ì•Žì•“ì•”ì••ì•—ì•˜ì•™ì•ì•žì• ì•Ąì•€ì•šì•°ì•±ì•łì•Žì•”ì•Œì•œì–€ì–„ì–‡ì–Œì–ì–ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–Žì–”ì–žì–č얻얌얜얟엄",6,"엌엎"], -["bf41","풞",10,"í’Ș",14], -["bf61","í’č",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩í“Ș퓫퓭퓟퓯퓱",6,"í“čí“șí“Œì—ì—‘ì—”ì—˜ì— ì—Ąì—Łì—„ì—Źì—­ì—źì—°ì—Žì—¶ì—·ì—Œ",5,"ì˜…ì˜†ì˜‡ì˜ˆì˜Œì˜ì˜˜ì˜™ì˜›ì˜œì˜€ì˜„ì˜šì˜Źì˜­ì˜źì˜°ì˜łì˜Žì˜”ì˜·ì˜čì˜»ì™€ì™ì™„ì™ˆì™ì™‘ì™“ì™”ì™•ì™œì™ì™ ì™Źì™Żì™±ì™žì™č왌욀욈욉욋욍요욕욘욜욀욄욧용우욱욎욞ìščìšșì›€ì›ì›ƒì›…ì›Œì›ì›ì›”ì›œì›ì› ì›Ąì›š"], -["c041","퓟",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픾í”čí”șí”»í”Ÿí”żí•í•‚í•ƒí•…",6,"핎핐핒",5,"í•ší•›í•í•ží•Ÿí•Ąí•ąí•Łì›©ì›Źì›°ì›žì›čì›œìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœĄìœ€ìœšìœ°ìœ±ìœłìœ”ìœ·ìœŒìœœì€ì„ìŠìŒììì‘",7,"ìœì ìšì«ìŽì”ìžìŒìœìŸìžƒìž„ìž…ìž‡ìžˆìž‰ìžŠìžŽìžìž‘ìž”ìž–ìž—ìž˜ìžšìž ìžĄìžŁìž€ìž„ìžŠìžŹìž­ìž°ìžŽìžŒìžœìžżìŸ€ìŸìŸˆìŸ‰ìŸŒìŸŽìŸìŸ˜ìŸìŸ€ìŸšìŸŹì €ì ì „ì ˆì Š"], -["c141","핀핊핧í•Ș핬핼",5,"핶핷í•čí•ș핻한",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햩햧"], -["c181","햹",31,"ì ì ‘ì “ì •ì –ì œì ì  ì €ì Źì ­ì Żì ±ì žì ŒìĄ€ìĄˆìĄ‰ìĄŒìĄìĄ”ìĄ°ìĄ±ìĄŽìĄžìĄșìą€ìąìąƒìą…ìą†ìą‡ìą‹ìąŒìąìą”ìąìąŸìąĄìąšìąŒìąœìŁ„ìŁˆìŁŒìŁ”ìŁ•ìŁ—ìŁ™ìŁ ìŁĄìŁ€ìŁ”ìŁŒìŁœì€€ì€„ì€…ì€†ì€Œì€ì€ì€‘ì€˜ì€Źì€Žì„ì„‘ì„”ì„˜ì„ ì„Ąì„Łì„Źì„°ì„Žì„ŒìŠˆìŠ‰ìŠŒìŠìŠ˜ìŠ™ìŠ›ìŠì§€ì§ì§„ì§‡ì§ˆì§Šì§ì§‘ì§“"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"í—Ší—§í—©í—Șí—«í—­í—ź"], -["c261","헯",4,"í—¶í—ží—ș",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"í˜í˜ží˜Ÿí˜Ąí˜ąí˜Łí˜„",7,"혟",9,"í˜șí˜»ì§•ì§–ì§™ì§šì§œì§ì§ ì§ąì§€ì§§ì§Źì§­ì§Żì§°ì§±ì§žì§čì§Œìš€ìšˆìš‰ìš‹ìšŒìšìš”ìš˜ìš©ì©Œì©ì©ì©”ì©œì©ì©Ÿì© ì©Ąì©šì©œìȘ„ìȘ˜ìȘŒìȘœì«€ì«„ì«Œì«ì«ì«‘ì«“ì«˜ì«™ì« ì«Źì«ŽìŹˆìŹìŹ”ìŹ˜ìŹ ìŹĄì­ì­ˆì­‰ì­Œì­ì­˜ì­™ì­ì­€ì­žì­čìźœìźžìŻ”ìŻ€ìŻ§ìŻ©ì°Œì°ì°ì°”ì°œì°ì°Ąì°ąì°§ì°šì°©ì°Źì°źì°°ì°žì°čì°»"], -["c341","í˜œí˜Ÿí˜żí™í™‚í™ƒí™„í™†í™‡í™Ší™Œí™Ží™í™í™’í™“í™–í™—í™™í™ší™›í™",4], -["c361","홱",4,"홹í™Ș",5,"í™Č홳화",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횱",5,"횩íšȘ찌찜찟채책챈챌챔챕챗챘챙챠챀챊챚챰챔ìȘìșìȜìČ ìČšìČ©ìČ«ìČŹìČ­ìČŽìČ”ìČžìČŒìł„ìł…ìł‡ìł‰ìłìł”ìł€ìłŹìł°ìŽìŽˆìŽ‰ìŽŒìŽìŽ˜ìŽ™ìŽ›ìŽìŽ€ìŽšìŽŹìŽčì”œì” ì”€ì”Źì”­ì”Żì”±ì”žì¶ˆì¶”ì¶•ì¶˜ì¶œì¶€ì¶„ì¶§ì¶©ì¶°ì·„ì·Œì·ì·šì·Źì·°ì·žì·čì·»ì·œìž„ìžˆìžŒìž”ìž™ìž ìžĄìž€ìžšìž°ìž±ìžłìž”"], -["c441","횫횭횟횯횱",7,"íšș회",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훥훹훣후훊훧훩",4], -["c481","훟훯훱í›Č훳훎훶",5,"í›Ÿí›żíœíœ‚íœƒíœ…",11,"휒휓휔ìč˜ìč™ìčœìčŸìč ìčĄìčšìč©ìč«ìč­ìčŽìč”ìčžìčŒìș„ìș…ìș‡ìș‰ìșìș‘ìș”ìș˜ìș ìșĄìșŁìș€ìș„ìșŹìș­ì»ì»€ì»„ì»šì»«ì»Źì»Žì»”ì»·ì»žì»čìŒ€ìŒìŒ„ìŒˆìŒìŒ‘ìŒ“ìŒ•ìŒœìŒ ìŒ€ìŒŹìŒ­ìŒŻìŒ°ìŒ±ìŒžìœ”ìœ•ìœ˜ìœœìœ€ìœ„ìœ§ìœ©ìœ°ìœ±ìœŽìœžìŸ€ìŸ…ìŸŒìŸĄìŸšìŸ°ìż„ìż ìżĄìż€ìżšìż°ìż±ìżłìż”ìżŒí€€í€„í€‘í€˜í€­í€Ží€”í€ží€Œ"], -["c541","휕휖휗휚휛휝휞휟휡",6,"íœȘ휬휼",5,"휶휷íœč"], -["c561","íœș휻휜",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","íŸíąí€íŠí§íšíȘí«í­íźíŻí±íČíłí”",6,"íŸíżíž€íž‚",5,"ížŠíž‹í„í…í‡í‰íí”í˜í íŹí­í°íŽíŒíœí‚í‚€í‚„í‚ší‚Źí‚Ží‚”í‚·í‚číƒ€íƒíƒ„íƒˆíƒ‰íƒíƒ‘íƒ“íƒ”íƒ•íƒœíƒíƒ íƒ€íƒŹíƒ­íƒŻíƒ°íƒ±íƒží„í„°í„±í„Ží„ží„șí…€í…í…ƒí…„í……í…Œí…í…í…”í…œí…í…Ÿí…Ąí…ší…Źí…Œí†„í†ˆí† í†Ąí†€í†ší†°í†±í†łí†”í†șí†Œí‡€í‡˜í‡Ží‡žíˆ‡íˆ‰íˆíˆŹíˆ­íˆ°íˆŽíˆŒíˆœíˆżí‰í‰ˆí‰œ"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","í‰€íŠ€íŠíŠ„íŠˆíŠíŠ‘íŠ•íŠœíŠ íŠ€íŠŹíŠ±íŠžíŠčíŠŒíŠżí‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹€í‹„í‹°í‹±í‹Ží‹žíŒ€íŒíŒƒíŒ…íŒŒíŒíŒŽíŒíŒ”íŒ–íŒœíŒíŒŸíŒ íŒĄíŒ„íŒšíŒ©íŒŹíŒ°íŒžíŒčíŒ»íŒŒíŒœí„í…íŒíœíŽ€íŽ„íŽŒíŽíŽíŽíŽ‘íŽ˜íŽ™íŽœíŽ íŽšíŽ©íŽ«íŽ­íŽŽíŽžíŽŒí„í…íˆí‰íí˜íĄíŁíŹí­í°íŽíŒíœíżí"], -["c7a1","íˆíí‘€í‘„í‘œí‘ í‘€í‘­í‘Żí‘ží‘čí‘Œí‘żí’€í’‚í’ˆí’‰í’‹í’í’”í’©í“Œí“í“”í“œí“Ÿí“ší“Źí“°í“ží“»í“œí”„í”ˆí”Œí””í”•í”—í”Œí”œí•€í•„í•Œí•í•í•‘í•˜í•™í•œí• í•„í•ší•©í•«í•­í•Ží•”í•ží•Œí–„í–…í–‡í–ˆí–‰í–í–„í—ˆí—‰í—Œí—í—’í—˜í—™í—›í—í—€í—„í—ší—Źí—Ží—”í—·í—č혀혁현혈혐협혓혔형혜혠"], -["c8a1","혀혭혞í˜čí˜Œí™€í™…í™ˆí™‰í™‹í™í™‘í™”í™•í™˜í™œí™§í™©í™°í™±í™Žíšƒíš…íšŒíšíšíš”íšíšŸíšĄíššíšŹíš°íščíš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›€í›ší›°í›”í›Œí›œíœ€íœ„íœ‘íœ˜íœ™íœœíœ íœšíœ©íœ«íœ­íœŽíœ”íœžíœŒí„í‡í‰íí‘í”í–í—í˜í™í íĄíŁí„í©íŹí°íŽíŒíœížížˆíž‰ížŒížíž˜íž™íž›íž"], -["caa1","äŒœäœłć‡ćƒčćŠ ćŻć‘”ć“„ć˜‰ć«ćź¶æš‡æž¶æž·æŸŻæ­Œç‚ç—‚çšŒè‹›èŒ„èĄ—èąˆèš¶èłˆè·è»»èżŠé§•ćˆ»ćŽć„æȘæ…€æźŒçè„šèŠșè§’é–ŁäŸƒćˆŠćąŸć„žć§ŠćčČćč过‡æ€æ†æŸŹæĄżæŸ—ç™Žçœ‹çŁ”çšˆç«żç°Ąè‚è‰źè‰±è««é–“äč«ć–æ›·æžŽçąŁç«­è‘›è€èŽéžšć‹˜ćŽć Șć”Œæ„Ÿæ†ŸæˆĄæ•ąæŸ‘æ©„æž›ç”˜ç–łç›Łçž°çŽșé‚Żé‘‘é‘’éŸ•"], -["cba1","挣ćČŹç”Čèƒ›é‰€é–˜ć‰›ć ˆć§œćȡ殗ćș·ćŒșćœŠæ…·æ±Ÿç•șç–†çł ç”łç¶±çŸŒè…”èˆĄè–‘è„èŹ›é‹Œé™é±‡ä»‹ä»·ć€‹ć‡±ćĄæ„·æ„Ÿæ…šæ”čæ§ȘæŒ‘ç–„çš†ç›–çź‡èŠ„è“‹ï€€éŽ§é–‹ć–€ćźąć‘ï€çČłçŸčé†”ć€šćŽ»ć±…ć·šæ‹’æźæ“šæ“§æž ç‚Źç„›è·èžžï€‚éœé‰…é‹žäčŸä»¶ć„ć·Ÿć»ș愆愗腱虔èč‡é”éš«äčžć‚‘æ°æĄ€ć„‰ćŠćŠ’æȘą"], -["cca1","çžŒéˆé»”ćŠ«æ€ŻèżČćˆæ†©æ­æ“Šæ ŒæȘ„æż€è†ˆèŠĄéš”ć …ç‰œçŠŹç”„ç”čçč­è‚©èŠ‹è­ŽéŁé”‘æŠ‰æ±ș朔甐çŒșèšŁć…Œæ…ŠçźèŹ™é‰—éŽŒäșŹäż“ć€žć‚Ÿć„†ć‹ć‹ćżć°ćąƒćșšćŸ‘æ…¶æ†Źæ“Žæ•Źæ™Żæš»æ›Žæą—æ¶‡ç‚…çƒ±ç’Ÿç’„ç“Šç—™çĄŹçŁŹç«Ÿç«¶ç”…ç¶“è€•è€żè„›èŽ–è­ŠèŒ•é€•éĄé ƒé žé©šéŻšäż‚ć•“ć șć„‘ć­Łć±†æ‚žæˆ’æĄ‚æą°"], -["cda1","æŁšæșȘç•Œç™žçŁŽçšœçł»çč«çčŒèšˆèȘĄè°żéšŽé·„ć€ć©ć‘Šć‘±ć›ș槑歀氻ćș«æ‹·æ”·æ•…æ•Čæš æžŻæ§æČœç—ŒçšçŸçšżçŸ”è€ƒè‚Ąè†è‹Šè‹œè°è—è ±èąŽèȘ„ï€ƒèŸœéŒźé›‡éĄ§é«˜éŒ“ć“­æ–›æ›Čæąç©€è°·é” ć›°ć€ćŽ‘æ˜†æą±æŁæ»ŸçšèąžéŻ€æ±šï€„éȘšäŸ›ć…Źć…±ćŠŸć­”ć·„恐恭拱控攻珙ç©șèšŁèȱ鞏äžČćŻĄæˆˆæžœç“œ"], -["cea1","科菓èȘ‡èȘČè·šéŽé‹éĄ†ć»“æ§šè—żéƒ­ï€…ć† ćź˜ćŻŹæ…ŁæŁșæŹŸçŒçŻç“˜çźĄçœè…è§€èČ«é—œé€šćˆźææ‹Źé€‚äŸŠć…‰ćŒĄćŁ™ć»Łæ› æŽžç‚šç‹‚ç–ç­èƒ±é‘›ćŠæŽ›çœ«äč–悀楊棞æ€Șæ„§æ‹æ§é­ćźçŽ˜è‚±èœŸäș€ćƒ‘ć’Źć–Źćʌ㶠㷧æ”Șæ•Žæ Ąæ©‹ç‹ĄçšŽçŸŻç”žçżčè† è•Žè›ŸèŒƒèœŽéƒŠé€ƒé©•éź«äž˜äč…äčä»‡äż±ć…·ć‹Ÿ"], -["cfa1","ć€ćŁć„ć’Žć˜”ć”ćžąćŻ‡ć¶‡ć»æ‡Œæ‹˜æ•‘æžžæŸ©æ§‹æ­æŻ†æŻŹæ±‚æșçžç‹—çŽ–çƒçžżçŸ©ç©¶ç”żè€‰è‡Œèˆ…èˆŠè‹ŸèĄąèŹłèłŒè»€é€‘é‚±é‰€éŠ¶é§’é©…éł©é·—éŸœćœ‹ć±€èŠéž éž«éșŽć›çȘ˜çŸ€èŁ™è»éƒĄć €ć±ˆæŽ˜çȘŸćźźćŒ“ç©čçȘźèŠŽèșŹć€Šćˆžć‹žć·ćœˆæ‹łæČæŹŠæ·ƒçœ·ćŽ„ç—è•šèč¶é—•æœș櫃朰詭軌鄋晷歞èČŽ"], -["d0a1","éŹŒï€‡ć«ćœ­ć„Žæ†æ§»çȘ硅çȘșç«…çłŸè‘”èŠè”łé€”é–šć‹»ć‡ç•‡ç­ èŒéˆžï€ˆæ©˜ć…‹ć‰‹ćŠ‡æˆŸæŁ˜æ„”éš™ćƒ…ćŠ€ć‹€æ‡ƒæ–€æ čæ§żç‘Ÿç­‹èŠč菫èŠČèŹčèż‘é„‰ï€‰ä»ŠćŠ—æ“’æ˜‘æȘŽçŽçŠçŠœèŠ©èĄŸèĄżè„Ÿï€ŠéŒŠäŒ‹ćŠæ€„æ‰±æ±Č玚甊äș˜ć…ąçŸœè‚ŻäŒäŒŽć…¶ć†€ć—œć™šćœ»ćŸșćŸŒć€”ć„‡ćŠ“ćŻ„ćȐ掎深ćčŸćżŒæŠ€æ——æ—Ł"], -["d1a1","æœžæœŸæžæŁ‹æŁ„æ©ŸæŹșæ°Łæ±œæČ‚淇玘琊çȘç’‚ç’Łç•žç•żçąçŁŻç„ç„‡ç„ˆç„ș缕简ç¶șçŸˆè€†è€­è‚Œèš˜è­è±ˆè”·éŒĄéŒ€éŁąé„‘éšŽéšé©„éș’ç·Šäœ¶ć‰æ‹źæĄ”é‡‘ć–«ć„șï€‹ï€Œćšœæ‡Šï€æ‹æ‹żï€Ž",5,"é‚Łï€”",4,"è«Ÿï€™ï€šï€›ï€œæš–ï€ç…–ï€žï€Ÿé›Łï€ ææșć—ï€Ąæžæ„ æčłï€ąç”·ï€Łï€€ï€„"], -["d2a1","玍èĄČć›Šćš˜ï€š",4,"äčƒï€­ć…§ć„ˆæŸ°è€ï€źć„łćčŽæ’šç§Šćż”æŹæ‹ˆæ»ćŻ§ćŻ—ćŠȘï€Żć„ŽćŒ©æ€’ï€°ï€±ï€Čç‘™ï€ł",5,"駑ï€č",10,"æżƒï„„ï„…è†żèŸČæƒ±ï„†ï„‡è…Šï„ˆï„‰ć°żï„Š",7,"ć«©èš„æ»çŽï„’",5,"èƒœï„˜ï„™ć°Œæł„ćŒżæșșć€šèŒ¶"], -["d3a1","äžčäș¶äœ†ć–źćœ˜ćŁ‡ćœ–æ–·æ—ŠæȘ€æź”æčçŸ­ç«Żç°žç·žè›‹èą’é„Č鍛撻柟çș疾達敖杍æ†șæ“”æ›‡æ·Ąæč›æœ­æŸč痰聃膜蕁芃談譚錟æČ“ç•“ç­”èžéć”ć ‚ćĄ˜ćčąæˆ‡æ’žæŁ ç•¶çł–èžłé»šä»Łćžˆćźć€§ć°ćČ±ćž¶ćŸ…æˆŽæ“ĄçŽłè‡șèą‹èČžéšŠé»›ćź…ćŸ·æ‚łć€’ćˆ€ćˆ°ćœ–ć ”ćĄ—ć°Žć± ćł¶ć¶‹ćșŠćŸ’æ‚ŒæŒ‘æŽ‰æ—æĄƒ"], -["d4a1","æŁčæ«‚æ·˜æžĄæ»”æż€ç‡Ÿç›œçčçŠ±çš»è„èŠ©èł­è·łèčˆé€ƒé€”é“éƒœéé™¶éŸœæŻ’ç€†ç‰˜çŠąçšçŁçŠżçŻ€çș›èź€ć੿ƒ‡æ•Šæ—œæšŸæČŒç„žç‡‰è±šé “äč­çȘä»ć†Źć‡ć‹•ćŒæ†§æ±æĄæŁŸæŽžæœŒç–Œçžłç«„èƒŽè‘ŁéŠ…ć…œæ–—æœæž“ç—˜ç«‡èłï„šè±†é€—é ­ć±Żè‡€èŠšééŻéˆćŸ—ć¶æ©™ç‡ˆç™»ç­‰è—€èŹ„é„§éš°ć–‡æ‡¶ï„›ç™©çŸ…"], -["d5a1","è˜żèžșèŁžé‚ï„œæŽ›çƒ™çžç”Ąèœï„é…Ș駱äș‚ć”æŹ„æŹ’ç€Ÿçˆ›è˜­éžžć‰ŒèŸŁć”æ“„æ”ŹæŹ–æż«ç±ƒçșœè—è„€èŠœæ‹‰è‡˜è Ÿć»Šæœ—æ”Șç‹Œç…ç‘Żèž‚éƒžäŸ†ćŽćŸ èŠć†·æŽ ç•„äșźć€†ć…©ć‡‰æąæš‘çČźçČ±çł§è‰Żè«’èŒ›é‡äŸ¶ć„·ć‹”ć‘‚ć»Źæ…źæˆŸæ—…æ«šæżŸç€Șè—œè Łé–­é©ąé©Șéș—é»ŽćŠ›æ›†æ­·ç€ç€«èœąé‚æ†æˆ€æ”ŁæŒŁ"], -["d6a1","ç…‰ç’‰ç·ŽèŻè“źèŒŠé€ŁéŠć†œćˆ—ćŠŁæŽŒçƒˆèŁ‚ć»‰æ–‚æźźæż‚ç°Ÿç”ä»€äŒ¶ć›čćČșć¶ș怜çŽČçŹ­çŸšçżŽè†é€žéˆŽé›¶éˆé ˜éœĄäŸ‹æŸ§çŠźé†Žéš·ć‹žï„ æ’ˆæ“„æ«“æœžç€˜çˆç›§è€è˜†è™œè·ŻèŒ…éœČé­Żé·șéč”çąŒç„żç¶ è‰éŒ„éčżéș“è«–ćŁŸćŒ„æœ§ç€§ç“ç± èŸć„Ąç€šç‰ąçŁŠèł‚èłšèłŽé›·äș†ćƒšćŻźć»–æ–™ç‡Žç™‚çž­èŠè“Œ"], -["d7a1","éŒéŹ§éŸćŁ˜ć©ć±ąæš“æ·šæŒç˜»çŽŻçž·è”žè€žé€é™‹ćŠ‰æ—’æŸłæŠŽæ”æșœç€ç‰ç‘ ç•™ç˜€çĄ«èŹŹéĄžć…­æˆźé™žäŸ–ć€«ćŽ™æ·Șç¶žèŒȘćŸ‹æ…„æ —ï„Ąéš†ć‹’è‚‹ć‡œć‡Œæ„žçšœç¶Ÿè±é™”äżšćˆ©ćŽ˜ćć”Žć±„æ‚§æŽæąšæ”ŹçŠç‹žç†ç’ƒï„ąç—ąç±ŹçœčçŸžèŽ‰èŁèŁĄé‡Œé‡é›ąéŻ‰ćæœŸç‡ç’˜è—șèșȘ隣鱗éșŸæž—æ·‹çłè‡šéœ–ç Ź"], -["d8a1","立珠çČ’æ‘©ç‘Șç—ČçąŒçŁšéŠŹé­”éș»ćŻžć蕿Œ è†œèŽ«é‚ˆäž‡ććš©ć·’ćœŽæ…ąæŒœæ™©æ›Œæ»żæŒ«çŁçžžèŹè”“è »èŒ“é„…é°»ć”œæŠč末æČ«èŒ‰è„ȘéșäșĄćŠ„ćż˜ćż™æœ›ç¶Čçœ”èŠ’èŒ«èŽœèŒžé‚™ćŸ‹ćŠčćȘ’ćŻæ˜§æžšæą…æŻç…€çœ”èČ·èłŁé‚é­…è„ˆèČŠé™Œé©€éș„ć­Ÿæ°“çŒ›ç›Č盟萌ć†ȘèŠ“ć…ć†•ć‹‰æŁ‰æČ”çœ„çœ ç¶żç·Źéąéș”滅"], -["d9a1","è”‘ć†„ćć‘œæ˜Žæšæ€§æșŸçšżçž‘èŒ—è“‚èžŸé…©éŠ˜éłŽèą‚äŸźć†’ć‹Ÿć§†ćžœæ…•æ‘žæ‘čæšźæŸæšĄæŻæŻ›ç‰Ÿç‰Ąç‘çœžçŸ›è€—èŠŒèŒ…èŹ€èŹšèČŒæœšæČç‰§ç›źçŠç©†é¶©æ­żæČ’ć€ąæœŠè’™ćŻćą“ćŠ™ć»Ÿææ˜ŽæłæžșçŒ«ç«—è‹—éŒšć‹™ć·«æ†źæ‡‹æˆŠæ‹‡æ’«æ— æ„™æ­ŠæŻ‹ç„Ąç·ç•çč†èˆžèŒ‚è•ȘèȘŁèČżéœ§é”Ąćąšé»˜ć€‘ćˆŽć»ć•æ–‡"], -["daa1","æ±¶çŽŠçŽ‹èžèšŠé–€é›Żć‹żæČ•物摳ćȘšć°Ÿć”‹ćœŒćŸźæœȘæą¶æ„ŁæžŒæč„çœ‰ç±łçŸŽè–‡èŹŽèż·éĄé»ŽćČ·æ‚¶æ„æ†«æ•æ—»æ—Œæ°‘æłŻçŽŸç‰ç·Ąé–”ćŻ†èœœèŹć‰ćšæ‹ææ’ČæœŽæšžæłŠç€ç’žçź”çČ•çž›è†Šèˆ¶è–„èż«é›čé§äŒŽćŠćć›æ‹ŒæŹæ”€æ–‘æ§ƒæłźæœ˜ç­ç•”ç˜ąç›€ç›ŒçŁçŁ»ç€Źç”†èˆŹèŸ èż”é ’éŁŻć‹ƒæ‹”æ’„æž€æœ‘"], -["dba1","ç™Œè·‹é†±é‰ąé«źé­ƒć€Łć‚ćŠćŠšć°šćč‡ćœ·æˆżæ”Ÿæ–čæ—æ˜‰æž‹æŠœæ»‚磅玥è‚Șè†€èˆ«èŠłè’ĄèšŒèšȘèŹ—é‚Šé˜ČéŸć€äżłï„ŁćŸčćŸ˜æ‹œæŽ’æŻæčƒç„™ç›ƒèƒŒèƒšèŁŽèŁ”è€™èł èŒ©é…é™ȘäŒŻäœ°ćž›æŸæ ąç™œç™Ÿé­„ćčĄæšŠç…©ç‡”ç•Șï„€çčè•ƒè—©éŁœäŒç­çœ°é–„ć‡Ąćž†æą”æ°Ÿæ±Žæł›çŠŻçŻ„èŒƒæł•çșćƒ»ćŠˆćŁæ“˜æȘ—ç’§ç™–"], -["dca1","çą§è˜—é—ąéœčï„„ćžćŒèźŠèŸšèŸŻé‚Šćˆ„çž„é±‰éŒˆäž™ć€‚ć…”ć±›ćč·æ˜žæ˜șæŸ„æŁ…ç‚łç”ç—…ç§‰ç«èŒ§é€ éšˆäżć Ąć ±ćŻ¶æ™źæ­„æŽ‘æčșæœœç€ç”«è©èŁœè€“è­œèŒ”äŒćƒ•ćŒćœćź“ćŸ©æœçŠè…čèŒŻè””è€‡èŠ†èŒčèŒ»éŠ„é°’æœŹäč¶äżžć„‰ć°ćłŻćł°æ§æŁ’çƒœç†ąç«çž«è“Źèœ‚é€ąé‹’éłłäžä»˜äżŻć‚…ć‰–ć‰ŻćŠć’ćŸ ć€«ć©Š"], -["dda1","ć­šć­”ćŻŒćșœï„Šæ‰¶æ•·æ–§æ”źæș„çˆ¶çŹŠç°żçŒ¶è…è…‘è†šè‰€èŠ™èŽ©èšƒèČ èłŠèł»è”Žè¶șéƒšé‡œé˜œé™„é§™éł§ćŒ—ćˆ†ć©ć™Žćąłć„”ć„źćżżæ†€æ‰źæ˜æ±Ÿç„šç›†çČ‰çłžçŽ›èŠŹèłé›°ï„§äœ›ćŒ—ćœżæ‹‚ćŽ©æœ‹æŁšçĄŒçčƒé”Źäž•ć‚™ćŒ•ćŒȘć‘ćŠƒć©ąćș‡æ‚Č憊扉æ‰čæ–æž‡æŠ§æŻ”æŻ–æŻ—æŻ˜æČžï„šç”ç—ș砒籑秕秘çČƒç·‹çżĄè‚„"], -["dea1","脟臂èČèœšèŁšèȘčè­ŹèČ»é„™éžéŁ›éŒ»ćšŹćŹȘćœŹæ–ŒæȘłæźŻæ”œæż±ç€•牝玭èČ§èł“é »æ†‘æ°·è˜éšäčäș‹äș›ä»•äŒșäŒŒäœżäżŸćƒżćČćžć”†ć—Łć››ćŁ«ć„ąćš‘ćŻ«ćŻșć°„ć·łćž«ćŸ™æ€æšæ–œæ–ŻæŸ¶æŸ»æą­æ­»æČ™æł—æžŁç€‰ç…ç ‚ç€Ÿç„€ç„ ç§çŻ©çŽ—ç”Čè‚†èˆèŽŽè“‘è›‡èŁŸè©è©žèŹèłœè”ŠèŸ­é‚ȘéŁŒé§Ÿéșć‰Šï„©æœ”ï„Ș"], -["dfa1","悘ćˆȘć±±æ•Łæ±•çŠç”Łç–çź—è’œé…žéœ°äč·æ’’æźșç…žè–©äž‰ï„«æ‰æŁźæž—èŠŸè”˜èĄ«æ·æŸéˆ’éąŻäžŠć‚·ćƒć„Ÿć•†ć–Ș昗歀氙泠澾ćșŠćș ć»‚æƒłæĄ‘æ©Ąæč˜çˆœç‰€ç‹€ç›žç„„çź±çż”èŁłè§Žè©łè±ĄèłžéœœćĄžç’œèłœć—‡ï„Źç©ĄçŽąè‰Čç‰Čç”Ÿç”„ï„­çŹ™ćą…ćŁ»ć¶Œćșćș¶ćŸæ•æŠ’æżæ•æš‘æ›™æ›žæ –æŁČ犀瑞筟生緖çœČ"], -["e0a1","èƒ„èˆ’è–Żè„żèȘ“é€é‹€é»éŒ ć€•ć„­ćž­æƒœæ˜”æ™łæžæ±æ·…æœŸçŸłçą©è“†é‡‹éŒ«ä»™ćƒŠć…ˆć–„ćŹ‹ćźŁæ‰‡æ•Ÿæ—‹æžČç…œçç‘„ç’‡ç’żç™ŹçŠȘ線çč•矚è…șè†łèˆčè˜šèŸŹè©”è·ŁéžéŠ‘é„é„éźźćšć±‘æ„”æł„æŽ©æž«èˆŒè–›è€»èš­èȘȘé›Șéœ§ć‰ĄæščæźČçș–èŸŸèŽé–ƒé™æ”æ¶‰ç‡źï„źćŸŽć§“ćźŹæ€§æƒș成星晟猩çč盛省筬"], -["e1a1","聖èČè…„èȘ é†’䞖拹æ­Č掗皅çŹčçŽ°ï„ŻèČ°ćŹć˜ŻćĄ‘ćź”ć°ć°‘ć·ąæ‰€æŽƒæ”æ˜­æąłæČŒæ¶ˆæșŻç€Ÿç‚€ç‡’ç”Šç–ç–Žç˜™çŹ‘çŻ ç°«çŽ çŽčè”Źè•­è˜‡èšŽé€éĄé‚”éŠ·éŸ¶éš·äż—ć±ŹæŸæ¶‘çȟçșŒèŹ–èŽ–é€Ÿć­«ć·œæè“€éœéŁĄçŽ‡ćź‹æ‚šæŸæ·žèšŸèȘŠé€é Œćˆ·ï„°ç‘çąŽéŽ–èĄ°é‡—äżźć—ć—œć›šćž‚ćŁœć«‚ćźˆćČ«ćł€ćž„æ„"], -["e2a1","戍手授搜收敞æščæźŠæ°ŽæŽ™æŒ±ç‡§ç‹©çžç‡ç’Čç˜ŠçĄç§€ç©—ç«ȘçČčç¶ç¶ŹçčĄçŸžè„©èŒ±è’è“šè—Șèą–èȘ°èźèŒžé‚é‚ƒé…ŹéŠ–éŠčéš‹éš§éššé›–éœ€é ˆéŠ–é«“éŹšć”ćĄŸć€™ć­°ćźżæ·‘æœšç†ŸçĄç’čè‚…èœć·ĄćŸ‡ćŸȘæ‚æ—Źæ ’æ„Żæ©“æź‰æŽ”æ·łçŁç›ŸçžŹç­çŽ”è„Łèˆœè€è“Žè•Łè©ąè«„é†‡éŒžé †éŠŽæˆŒèĄ“èż°é‰„ćŽ‡ćŽ§"], -["e3a1","ć”©ç‘Ÿè†èšæż•æ‹Ÿçż’è€¶è„Č侞äč˜ćƒ§ć‹ć‡æ‰żæ˜‡çč©è …é™žäŸćŒ™ć˜¶ć§‹ćȘ€ć°žć±Žć±ćž‚ćŒ‘æƒæ–œæ˜Żæ™‚æžŸæŸŽçŒœçŸąç€șçż…è’”è“èŠ–è©Šè©©è«Ąè±•è±șćŸŽćŻ”ćŒæŻæ‹­æ€æź–æčœç†„çŻ’è•è­˜è»ŸéŁŸéŁŸäŒžäŸäżĄć‘»ćš ćźžæ„Œæ–°æ™šç‡Œç”łç„žçŽłè…Žè‡ŁèŽ˜è–Ș藎蜃蚊èș«èŸ›ï„±èż…ć€±ćź€ćŻŠæ‚‰ćŻ©ć°‹ćżƒæČ"], -["e4a1","ï„Čæ·±ç€‹ç”šèŠŻè«¶ä»€ćï„łé›™æ°äșžäż„ć…’ć•žćš„ćłšæˆ‘ç‰™èŠœèŽȘè›ŸèĄ™èšé˜żé›…é€“éŽ‰é”ć ŠćČłć¶œć脿ƒĄæ„•æĄæš‚æž„é„‚é”éĄŽé°éœ·ćź‰ćČžæŒ‰æ™æĄˆçœŒé›éžéĄ”éźŸæ–ĄèŹè»‹é–Œć””ćȩ淖ćș”æš—ç™ŒèŽé—‡ćŁ“æŠŒç‹ŽéŽšä»°ć€źæ€æ˜»æźƒç§§éŽŠćŽ“ć“€ćŸƒćŽ–æ„›æ›–æ¶Żçąè‰Ÿéš˜é„ćŽ„æ‰ŒæŽ–æ¶ČçžŠè…‹éĄ"], -["e5a1","æ«»çœŒé¶ŻéžšäčŸć€»ć†¶ć€œæƒč揶怰çˆșè€¶ï„Žé‡ŽćŒ±ï„”ï„¶çŽ„è‹„è‘Żè’»è—„èșï„·äœŻï„žï„čćŁ€ć­ƒæ™æšæ”˜æ•­æš˜ï„șæ„ŠæšŁæŽ‹ç€ç…Źç—’ç˜çŠłç©°ï„»çŸŠï„Œè„„ï„œèź“é‡€é™œï„Ÿé€Šćœ„ćŸĄæ–ŒæŒç˜€çŠŠèȘžéŠ­é­šéœŹć„„æ†¶æŠ‘æȘè‡†ćƒć °ćœŠç„‰èš€è«șć­Œè˜–äżșć„ŒćšŽć„„æŽ©æ·čć¶Șæ„­ć††äșˆäœ™ï„żïŠ€ïŠćŠ‚ïŠ‚"], -["e6a1","歟汝璔瀖與艅èŒčèŒżèœïŠ†é€˜ïŠ‡ïŠˆïŠ‰äșŠïЊ㟟ćœč易疫çččè­ŻïŠé€†é©›ćš„ć §ć§žćšŸćźŽïŠŽć»¶ïŠïŠææŒ»ïŠ‘æ€œæČ‡æČżæ¶Žæ¶“æ·”æŒ”ïŠ’çƒŸç„¶ç…™ïŠ“ç‡ƒç‡•ïŠ”çĄçĄŻïŠ•ç­”ç·ŁïŠ–çžŻïŠ—èĄè»ŸïŠ˜ïŠ™ïŠšé‰›ïŠ›éł¶ïŠœïŠïŠžæ‚…æ¶…ïŠŸç†±ïŠ ïŠĄé–±ćŽ­ïŠąïŠŁïŠ€æŸ“ïŠ„ç‚Žç„°ç°è‰¶è‹’"], -["e7a1","閻髄éčœæ›„ïŠ§ç‡è‘‰ïŠšïŠ©ćĄ‹ïŠȘïŠ«ć¶žćœ±ïŠŹæ˜ æšŽæ„čæŠźæ°žæłłæž¶æœæżšç€›ç€Żç…ç‡Ÿç°ïŠ­ç‘›ïŠźç“”ç›ˆç©Žçș“ïŠŻïŠ°è‹±è© èżŽïŠ±éˆïŠČéœ™ïŠłïŠŽäč‚ć€ȘïŠ”ćˆˆćĄæ›łæ±­æżŠçŒŠçżç©ąèŠźè—è˜‚ïŠ¶èŁ”è©Łè­œè±«ïŠ·éŠłïŠžéœ“é äș”äŒäż‰ć‚ČćˆćŸćłć—šćĄąćąșć„§ćš›ćŻ€æ‚ŸïŠčæ‡Šæ•–æ—żæ™€æą§æ±šæŸł"], -["e8a1","çƒç†Źç’ç­œèœˆèȘ€é°ČéŒ‡ć±‹æČƒç„玉éˆșæș«ç‘„ç˜Ÿç©©çž•è˜Šć…€ćŁ…æ“ç“źç”•ç™°çżé‚•é›é„”æžŠç“ŠçȘ©çȘȘè‡„è›™èžèš›ć©‰ćźŒćź›æąĄæ€€æ”ŁçŽ©ç“çŹçą—ç·©çż«è„˜è…•èŽžè±Œé˜źé ‘æ›°ćŸ€æ—ș枉æ±Ș王怭湃æ­ȘçŸźć€–ć”Źć·çŒ„ç•ïŠșïŠ»ćƒ„ć‡čć Żć€­ćŠ–ć§šćŻ„ïŠŒïŠœć¶ąæ‹—æ–æ’“æ“ŸïŠŸæ›œïŠżæ©ˆï§€ç‡żç‘€ï§"], -["e9a1","çȘˆçȘŻçč‡çčžè€€è…°ï§‚èŸŻèŠèŹ é™ï§ƒé‚€é„’æ…ŸæŹČæ”ŽçžŸè€„èŸ±äż‘ć‚­ć†—ć‹‡ćŸ‡ćą‰ćźčćșžæ…‚投涌æč§æș¶ç†”ç‘ąç”šç”ŹèłèŒžè“‰èžŠéŽ”éžï§„äșŽäœ‘恶ć„Șćˆć‹ćłćź‡ćŻ“ć°€æ„šæ†‚æ—Žç‰›çŽ—ç‘€ç›‚ç„çŠ‘çŠčçŽ†çŸœèŠ‹è—•è™žèż‚é‡éƒ”é‡Șéš…é›šé›©ć‹–ćœ§æ—­æ˜±æ Żç…œçš¶éƒé Šäș‘ï§…æ©’æźžæŸç†‰è€˜èŠžè•“"], -["eaa1","運隕é›ČéŸ»è”šéŹ±äșç†Šé›„ć…ƒćŽŸć“Ąćœ“ćœ’ćžŁćȘ›ć«„ćŻƒæ€šæ„żæŽæČ…æŽčæčČæșçˆ°çŒżç‘—è‹‘èąèœ…é ï§†é™ąéĄ˜éŽ›æœˆè¶Šé‰žäœć‰ćƒžć±ćœć§”ćšć°‰æ…°æšæž­çˆČç‘‹ç·ŻèƒƒèŽè‘Šè”żèŸèĄ›è€˜èŹ‚é•éŸ‹é­äčłäŸ‘ć„’ć…Șï§‡ć”Żć–©ć­șćź„ćčŒćčœćșŸæ‚ æƒŸæ„ˆæ„‰æ„æ”žæœ‰ï§ˆæŸ”æŸšï§‰æ„Ąæ„ąæČčæŽ§ï§Šæžžï§‹"], -["eba1","æżĄçŒ¶çŒ·ï§Œç‘œç”±ï§ç™’ï§Žï§ç¶­è‡ŸèžèŁ•èȘ˜è«›è«­èž°èč‚遊速éșé…‰é‡‰éźï§ï§‘ć ‰ï§’æŻ“è‚‰è‚Čï§“ï§”ć…ć„«ć°čï§•ï§–æœ€çŽ§èƒ€èŽ‡ï§—éˆ—é–ï§˜ï§™ï§šï§›èżæˆŽç€œç”šèžï§œćž æ©æ…‡æź·èȘŸéŠ€éš±äč™ćŸæ·«è”­é™°éŸłéŁźæ–æłŁé‚‘ć‡æ‡‰è†șé·čäŸć€šć„€ćźœæ„æ‡żæ“Źæ€…æŻ…ç–‘çŸŁçŸ©è‰€è–èŸ»èĄŁèȘŒ"], -["eca1","議醫äșŒä»„äŒŠï§ï§žć€·ć§šï§Ÿć·ČćŒ›ćœ›æ€Ąï§ ï§Ąï§ąï§ŁçˆŸç„ï§€ç•°ç—ï§„ç§»ï§Šè€Œè€łè‚„è‹Ąè‘ï§§ï§šèČœèČłé‚‡ï§©ï§ȘéŁŽé€Œï§«ï§Źç€·ç›ŠçżŠçżŒçżŒèŹšäșșä»ćˆƒć°ï§­ć’œć› ć§»ćŻ…ćŒ•ćżæčźï§źï§Żç”Ș茔藺蚓èȘï§±é­é·ï§Čï§łäž€äœšäœŸćŁčæ—„æșąé€žéްéŠčä»»ćŁŹćŠŠć§™æï§Žï§”çš”ï§¶èèłƒć…„ć„"], -["eda1","ï§·ï§žï§čä»ć‰©ć­•èŠżä»”ćˆșć’šć§‰ć§żć­ć­—ć­œæŁæ…ˆæ»‹ç‚™ç…źçŽ†ç“·ç–”çŁçŽ«è€…è‡ȘèŒšè”—è—‰è«źèł‡é›Œäœœć‹șćšŒæ–«æ˜šçŒç‚žçˆ”ç¶œèŠé…Œé›€é”Čć­±æŁ§æź˜æœș盞ćČ‘æš«æœ›çźŽç°Șè ¶é›œäžˆä»—ćŒ ć Žćą»ćŁŻć„Źć°‡ćžłćș„ćŒ”掌æšČ杖暟æȘŁæŹŒæŒżç‰†ï§ș獐璋章çČ§è…žè‡Ÿè‡§èŽŠè‘Źè”Łè–”è—èŁèŽ“é†Źé•·"], -["eea1","éšœć†ć“‰ćœšćź°æ‰ææ œæą“æžœæ»“çœçžĄèŁèČĄèŒ‰éœ‹éœŽçˆ­çźè«éŒšäœ‡äœŽć„Č撀槐ćș•æŠ”æ”æ„źæš—æČźæžšç‹™çŒȘç–œçźžçŽ”è‹§èč著藷詛èČŻèș‡é€™é‚žé›ŽéœŸć‹ŁćŠć«ĄćŻ‚æ‘˜æ•”æ»Žç‹„ï§»çš„ç©çŹ›ç±çžŸçżŸè»èŹ«èłŠè”€è·ĄèčŸèżȘèżč適鏑䜃äœș悳慹慾才ć‰ȘćĄĄćĄŒć„ ć°ˆć±•ć»›æ‚›æˆ°æ “æźżæ°ˆæŸ±"], -["efa1","煎琠田甾畑ç™Č筌缋缭篆çșè©źèŒŸèœ‰éˆżéŠ“éŒąé«é›»éĄšéĄ«é€žćˆ‡æˆȘæŠ˜æ”™ç™€ç«ŠçŻ€ç”¶ć ćČŸćș—挞ç‚čçČ˜éœ‘éźŽé»žæŽ„æ‘ș蝶䞁äș•äș­ćœć”摈槃漚ćč€ćș­ć»·ćŸæƒ…æŒșæ”żæ•Žæ—Œæ™¶æ™žæŸŸæ„šæȘ‰æ­Łæ±€æ·€æ·šæžŸæčžç€žç‚ĄçŽŽçœç”șç›çą‡çŠŽçš‹ç©œçČŸç¶Žè‰‡èš‚è«ȘèȞ鄭酊釘鉩鋌錠霆靖"], -["f0a1","éœé ‚éŒŽćˆ¶ćŠ‘ć•Œć €ćžćŒŸæ‚ŒææąŻæżŸç„­çŹŹè‡è–șèŁœè«žèč„é†é™€éš›éœœéĄŒéœŠäżŽć…†ć‡‹ćŠ©ć˜ČćŒ”ćœ«æŽȘ操早晁æ›șæ›čæœæąæŁ—æ§œæŒ•æœźç…§ç‡„çˆȘç’Șçœș焖焚租皠çȘ•çČ—çłŸç”„çč°è‚‡è—»èš€è©”èȘżè¶™èșé€ é­é‡Łé˜»é›•éł„æ—ç°‡è¶łéƒć­˜ć°Šć’æ‹™çŒć€§ćź—ćŸžæ‚°æ…«æŁ•æ·™çźçšźç”‚ç¶œçž±è…«"], -["f1a1","èžȘèž”éŸé˜äœćć·Šćș§æŒ«çœȘäž»äœäŸćšć§èƒ„ć‘Șć‘šć—Ÿć„ćź™ć·žć»šæ™æœ±æŸ±æ ȘæłšæŽČæčŠæŸç‚·ç ç–‡ç±ŒçŽ‚çŽŹç¶ąèˆŸè››èš»èȘ…è”°èșŠèŒłé€±é…Žé…’鑄駐ç«čçČ„äżŠć„ć‡†ćŸˆćŻŻćł»æ™™æšœæ”šæș–æżŹç„Œç•Żç«Łè ąé€Ąé”é›‹é§żèŒäž­ä»ČèĄ†é‡ćœæ«›æ„«æ±è‘șćąžæ†Žæ›Ÿæ‹Żçƒç”‘ç—‡çč’è’žè­‰èވäč‹ćȘ"], -["f2a1","ć’«ćœ°ć€ćż—æŒæŒ‡æ‘Żæ”Żæ—šæ™șæžæžłæ­ąæ± æČšæŒŹçŸ„ç „ç„‰ç„—çŽ™è‚ąè„‚è‡łèŠèŠ·èœ˜èȘŒï§ŒèŽ„è¶ŸéČ盎皙皷çč”è·ć”‡ć—”ćĄ”æŒŻæąæ™‰æ™‹æĄ­æŠ›æź„æŽ„æș±çç‘šç’Ąç•›ç–čç›Ąçœžçž‹ç§Šçž‰çžè‡»è”Żèą—èšșèł‘è»«èŸ°é€ČéŽ­é™Łé™łéœ‡äŸ„ć±ć§Șć«‰ćž™æĄŽç“†ç–Ÿç§©çȘ’è†Łè›­èłȘè·Œèż­æ–Ÿæœ•ï§œćŸ·æœ—ç·èŒŻ"], -["f3a1","é¶é›†ćŸ”æ‡ČæŸ„äž”äŸ˜ć€Ÿć‰ć—Ÿć”Żć·źæŹĄæ­€çŁ‹çźšï§Ÿèč‰è»Šéźæ‰æŸç€çȘ„éŒŻé‘żéœȘæ’°æŸŻç‡Šç’šç“šç«„ç°’çș‚çČČçș˜èźšèŽŠé‘œé€é„ŒćˆčćŻŸæ“Šæœ­çŽźćƒ­ćƒćĄč慘慙æ‡șæ–Źç«™èź’èź–ć€‰ć€Ąć‰”ć”±ćšŒć» ćœ°æ„Žæ•žæ˜Œæ˜¶æšąæ§æ»„æŒČ猖瘡çȘ“è„čè‰™è–è’Œć‚”ćŸ°ćŻ€ćŻšćœ©æŽĄç Šç¶”èœè”Ąé‡‡é‡”ć†ŠæŸ”ç­–"], -["f4a1","èČŹć‡„ćŠ»æ‚œè™•ć€œï§żć‰”ć°ș慜戚拓æ“Č斄滌瘠脊èč é™Ÿéš»ä»Ÿćƒć–˜ć€©ć·æ“…æł‰æ·șçŽ”ç©żèˆ›è–Šèł€èžé·é‡§é—Ąé˜ĄéŸ†ć‡žć“Č斆ćŸčæ’€æŸˆç¶ŽèŒŸèœé”ćƒ‰ć°–æČŸæ·»ç”›çž»ç°œç±€è©čè«‚ć žćŠŸćž–æ·ç‰’ç–Šç«è«œèČŒèŒ’ć»łæ™Žæ·žèœèè«‹é‘éŻ–ïš€ć‰ƒæ›żæ¶•æ»Żç· è«Šé€źéžé«”ćˆć‰żć“šæ†”æŠ„æ‹›æąą"], -["f5a1","æ€’æ„šæš”ç‚’ç„ŠçĄç€ç€Žç§’çšè‚–è‰žè‹•è‰è•‰èČ‚è¶…é…ąé†‹é†źäżƒć›‘ç‡­çŸ—èœ€è§žćŻžćż–æ‘é‚šćąćĄšćŻ”æ‚€æ†æ‘ çžœè°è”„éŠƒæ’źć‚ŹćŽ”æœ€ćąœæŠœæŽšæ€Žæ„žæšžæč«çšșç§‹èŠ»è©è«è¶šèżœé„’é…‹é†œéŒéŒ˜éŽšé››éš¶é°äž‘ç•œç„ç«șç­‘çŻ‰çžźè“„èč™èčŽè»žé€æ˜„æ€żç‘ƒć‡șæœźé»œć……ćż æČ–èŸČèĄèĄ·æ‚Žè†”èƒ"], -["f6a1","èŽ…ć–ćčć˜Žćš¶ć°±ç‚Šçż èšè„†è‡­è¶Łé†‰é©Ÿé·ČćŽä»„ćŽ æƒ»æžŹć±€äŸˆć€€ć—€ćł™ć蟿„æą”æČ»æ·„ç†Ÿç—”ç—Žç™Ąçššç©‰ç·‡ç·»çœźè‡Žèš©èŒœé›‰éŠłéœ’ć‰‡ć‹…éŁ­èŠȘäžƒæŸ’æŒ†äŸ”ćŻąæž•æČˆæ”žç›ç §é‡éŒèŸ„ç§€çš±ćż«ä»–ć’€ć”ŸćąźćŠ„æƒ°æ‰“æ‹–æœ¶æ„•èˆ”é™€éŠ±é§ć€Źć“ć•„ćŒïšæ‰˜ïš‚æ“ąæ™«æŸæżæżŻçąçžèš—"], -["f7a1","éžć‘‘ć˜†ćŠćœˆæ†šæ­Žç˜ç‚­ç¶»èȘ•ć„Șè„«æŽąçœˆè€œèČȘćĄ”æ­æŠ»ćź•ćž‘æčŻïšƒè•©ć…Œć°ć€Șæ€ æ…‹æź†æ±°æł°çŹžèƒŽè‹”è·†é‚°éą±ïš„æ“‡æŸ€æ’‘æ”„ć…ŽććœŸèšŽæ…ŸæĄ¶ïš…ç—›ç­’ç”±é€šć †æ§Œè…żè€Ș退é čćžć„—ćŠŹæŠ•é€éŹȘ慝ç‰čé—–ćĄć©†ć·ŽæŠŠæ’­æ“șæ·æłąæŽŸçˆŹç¶ç Žçœ·èŠ­è·›é —ćˆ€ć‚æżç‰ˆç“ŁèČ©èŸŠéˆ‘"], -["f8a1","é˜Șć…«ć­æŒäœ©ć”„æ‚–æ•—æČ›æ”żç‰Œç‹œçš—èЇèČćœ­æŸŽçƒčè†šæ„ŽäŸżćæ‰ç‰‡çŻ‡ç·šçż©ééž­éš™èȶćȘćčłæž°èè©•搠揖ćčŁć»ąćŒŠæ–ƒè‚șè”œé–‰é™›äœˆćŒ…ćŒćŒć’†ć“șćœƒćžƒæ€–æŠ›æŠ±æ•ïš†æłĄæ”Šç–±ç Čèƒžè„Żè‹žè‘Ąè’Čèąè€’é€‹é‹ȘéŁœéź‘ćč…æšŽæ›ç€‘çˆ†ïš‡äż”ć‰œćœȘæ…“æ“æš™æŒ‚ç“ąç„šèĄšè±čéŁ‡éŁ„é©ƒ"], -["f9a1","ć“çšŸæ„“è«·è±ŠéąšéŠźćœŒæŠ«ç–Čçšźèą«éżé™‚ćŒčćŒŒćż…æłŒçŒç•ąç–‹ç­†è‹ŸéŠäčé€Œäž‹äœ•ćŽŠć€ć»ˆæ˜°æČłç‘•è·èŠèł€ééœžé°•ćŁ‘ć­žè™èŹ”é¶ŽćŻ’æšæ‚æ—±æ±—æŒąæŸŁç€šçœ•çż°é–‘é–’é™éŸ“ć‰Čèœ„ć‡œć«ć’žć•Łć–ŠæȘ»æ¶”緘艊銜陷éččćˆć“ˆç›’è›€é–€é—”é™œäșąäŒ‰ć§źć«Šć··æ’æŠ—æ­æĄæČ†æžŻçŒžè‚›èˆȘ"], -["faa1","項äș„ć•ć’łćž“ć„šć­©ćźłæ‡ˆæ„·æ”·ç€ŁèŸčè§Łè©Č諧邂駭éȘžćŠŸæ žć€–ćčžæè‡èĄŒäș«ć‘ćšźçŠé„•éŸżé€‰é„—éŠ™ć™“ćąŸè™›èš±æ†Č櫶獻軒歇éšȘé©—ć„•çˆ€è”«é©äż”ćłŽćŒŠæ‡žæ™›æł«ç‚«çŽ„çŽčçŸçœ©çç”ƒç”ąçžŁèˆ·èĄ’ïšŠèłąé‰‰éĄŻć­‘ç©ŽèĄ€é ć«Œäż ć”ć€ŸćłœæŒŸæ”čç‹čè„…è„‡èŽąé‹é °äșšć…„ćˆ‘ćž‹"], -["fba1","ćœąæł‚æ»Žç€…çç‚Żç†’ç©ç‘©èŠèžąèĄĄé€ˆé‚ąéŽŁéŠšć…źćœ—æƒ æ…§æšłè•™èčŠé†Żéž‹äčŽäș’ć‘ŒćŁ•ćŁșć„œćČ”ćŒ§æˆ¶æ‰ˆæ˜Šæ™§æŻ«æ”©æ·æč–æ»žæŸ”æż æż©çç‹ç„ç‘šç“ çš“ç„œçłŠçžžèƒĄèŠŠè‘«è’żè™Žè™ŸèŽè­·è±ȘéŽŹé €éĄ„æƒ‘æˆ–é…·ć©šæ˜æ··æžŸçżé­‚ćżœæƒšçŹć“„ćŒ˜æ±žæł“æŽȘ烘箅è™čèšŒéŽ»ćŒ–ć’ŒćŹ…æšș火畔"], -["fca1","çŠçŠŸèŠ±èŻè©±è­èČšéŽïš‹æ“Žæ”«çąș繻穫䞞斚愐柊ć軿‚Łæ›æ­Ąæ™„æĄ“æž™ç…„ç’°çŽˆé‚„é©©é°„æŽ»æ»‘çŒŸè±é—Šć‡°ćčŒćŸšææƒ¶æ„°æ…Œæ™ƒæ™„æŠ„æłæčŸæ»‰æœąç…Œç’œçš‡çŻç°§è’è—é‘éšé»ƒćŒŻć›žć»»ćŸŠæąæ‚”æ‡·æ™ŠæœƒæȘœæ·źæŸźç°çȘçčȘ膟茎蛔èȘšèł„ćŠƒçČćź–æ©«é„ć“źćš†ć­æ•ˆæ–…æ›‰æąŸæ¶æ·†"], -["fda1","çˆ»è‚Žé…”é©äŸŻć€™ćŽšćŽćŒć–‰ć—…ćžżćŸŒæœœç…Šçé€…ć‹›ć‹łćĄ€ćŁŽç„„ç†ç‡»è–°èš“æšˆè–šć–§æš„ç…Šè±ć‰ć–™æŻćœ™ćŸœæźæš‰ç…‡è«±èŒéșŸäŒ‘æșçƒ‹ç•Šè™§æ€è­Žé·žć…‡ć‡¶ćŒˆæŽ¶èƒžé»‘æ˜•æŹŁç‚˜ç—•ćƒć±čçŽ‡èš–æŹ æŹœæ­†ćžæ°æŽœçż•èˆˆćƒ–ć‡žć–œć™«ć›ć§ŹćŹ‰ćžŒæ†™æ†˜æˆ±æ™žæ›Šç†™ç†čç†ș犧穧繀çŸČè©°"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json deleted file mode 100644 index d8bc871..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json +++ /dev/null @@ -1,177 +0,0 @@ -[ -["0","\u0000",127], -["a140","ă€€ïŒŒă€ă€‚ïŒŽâ€§ïŒ›ïŒšïŒŸïŒïž°â€Šâ€„ïčïč‘ïč’·ïč”ïč•ïč–ïč—ïœœâ€“ïž±â€”ïžłâ•ŽïžŽïčïŒˆïŒ‰ïž”ïž¶ïœ›ïœïž·ïžžă€”ă€•ïžčïžșă€ă€‘ïž»ïžŒă€Šă€‹ïžœïžŸă€ˆă€‰ïžżïč€ă€Œă€ïčïč‚ă€Žă€ïčƒïč„ïč™ïčš"], -["a1a1","ïč›ïčœïčïčžâ€˜â€™â€œâ€ă€ă€žâ€”â€ČïŒƒïŒ†ïŒŠâ€»Â§ă€ƒâ—‹â—â–łâ–Čâ—Žâ˜†â˜…â—‡â—†â–Ąâ– â–œâ–ŒăŠŁâ„…ÂŻïżŁïŒżËïč‰ïčŠïčïčŽïč‹ïčŒïčŸïč ïčĄïŒ‹ïŒĂ—Ă·Â±âˆšïŒœïŒžïŒâ‰Šâ‰§â‰ âˆžâ‰’â‰Ąïčą",4,"∩âˆȘâŠ„âˆ âˆŸâŠżă’ă‘âˆ«âˆźâˆ”âˆŽâ™€â™‚âŠ•âŠ™â†‘â†“â†â†’â†–â†—â†™â†˜âˆ„âˆŁïŒ"], -["a240","∕ïčšïŒ„ïż„ă€’ïż ïżĄïŒ…ïŒ â„ƒâ„‰ïč©ïčȘïč«ă•ăŽœăŽăŽžăŽăŽĄăŽŽăŽă„Â°ć…™ć…›ć…žć…ć…Ąć…Łć—§ç“©çłŽâ–",7,"â–â–Žâ–â–Œâ–‹â–Šâ–‰â”Œâ”Žâ”Źâ”€â”œâ–”â”€â”‚â–•â”Œâ”â””â”˜â•­"], -["a2a1","╼╰╯═╞â•Ș╥◹◣◄◀╱â•Čâ•łïŒ",9,"Ⅰ",9,"〡",8,"ćć„ć…ïŒĄ",25,"",21], -["a340","Α",16,"ÎŁ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","侀äč™äžäžƒäčƒäčäș†äșŒäșșć„żć…„ć…«ć‡ ćˆ€ćˆćŠ›ćŒ•ććœćˆäž‰äž‹äžˆäžŠäž«äžžć‡Ąäč…äčˆäčŸäčžäșŽäșĄć…€ćˆƒć‹șćƒć‰ćŁćœŸćŁ«ć€•ć€§ć„łć­ć­‘ć­“ćŻžć°ć°ąć°žć±±ć·ć·„ć·±ć·Čć·łć·ŸćčČć»ŸćŒ‹ćŒ“æ‰"], -["a4a1","侑侐侍侭侰äžčäč‹ć°čäșˆäș‘äș•äș’äș”äșąä»ä»€ä»ƒä»†ä»‡ä»ä»Šä»‹ä»„ć…ƒć…ć…§ć…­ć…źć…Źć†—ć‡¶ćˆ†ćˆ‡ćˆˆć‹»ć‹Ÿć‹żćŒ–ćŒčćˆć‡ć…ćžćŽ„ć‹ćŠććŁŹć€©ć€«ć€Ș怭歔民氀ć°ș汯淎ćč»ć»żćŒ”ćŒ•ćżƒæˆˆæˆ¶æ‰‹æ‰Žæ”Żæ–‡æ–—æ–€æ–čæ—„æ›°æœˆæœšæŹ æ­ąæ­čæŻ‹æŻ”æŻ›æ°æ°Žç«çˆȘçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠŹçŽ‹äž™"], -["a540","䞖䞕䞔䞘䞻äčäčäčŽä»„ä»˜ä»”ä»•ä»–ä»—ä»Łä»€ä»™ä»žć……ć…„ć†‰ć†Šć†Źć‡čć‡șć‡žćˆŠćŠ ćŠŸćŒ…ćŒ†ćŒ—ćŒä»ŸćŠć‰ćĄć ćŻćźćŽ»ćŻć€ćłćŹćźć©ćšćŒćžć”ć«ćŠćȘćČć±ć°ć„ć­ć»ć››ć›šć€–"], -["a5a1","ć€źć€±ć„Žć„¶ć­•ćźƒć°Œć·šć·§ć·Šćž‚ćžƒćčłćčŒćŒćŒ˜ćŒ—ćż…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–„æ—ŠæœźæœŹæœȘæœ«æœ­æ­ŁæŻæ°‘æ°æ°žæ±æ±€æ°ŸçŠŻçŽ„çŽ‰ç“œç“Šç”˜ç”Ÿç”šç”©ç”°ç”±ç”Čç”łç–‹ç™œçšźçšżç›źçŸ›çŸąçŸłç€ș犟穎立䞞䞟äč’äč“äč©äș™äș€äșŠäș„ä»żäŒ‰äŒ™äŒŠäŒ•äŒäŒäŒ‘äŒä»Čä»¶ä»»ä»°ä»łä»œäŒäŒ‹ć…‰ć…‡ć…†ć…ˆć…š"], -["a640","ć…±ć†ć†°ćˆ—ćˆ‘ćˆ’ćˆŽćˆ–ćŠŁćŒˆćŒĄćŒ ć°ć±ć‰ććŒćŠććć‹ć„ć‘ććˆćƒćŽć†ć’ć› ć›žć›ćœłćœ°ćœšćœ­ćœŹćœŻćœ©ć€™ć€šć€·ć€žćŠ„ć„žćŠƒć„œć„č橂橁歗歘漇漈漅漉ćŻș氖ć±č淞枆ćč¶ćčŽ"], -["a6a1","ćŒćŒ›ćż™ćż–æˆŽæˆŒæˆæˆæ‰Łæ‰›æ‰˜æ”¶æ—©æ—šæ—Źæ—­æ›Čæ›łæœ‰æœœæœŽæœ±æœ”æŹĄæ­€æ­»æ°–æ±æ±—æ±™æ±Ÿæ± æ±æ±•æ±Ąæ±›æ±æ±Žç°ç‰Ÿç‰ç™Ÿç«čç±łçłžçŒ¶çŸŠçŸœè€è€ƒè€Œè€’è€łèżè‚‰è‚‹è‚Œè‡Łè‡Șè‡łè‡ŒèˆŒèˆ›èˆŸè‰źè‰Čè‰Ÿè™«èĄ€èĄŒèĄŁè„żé˜ĄäžČäșšäœäœäœ‡äœ—䜞䌎䜛䜕䌰䜐䜑䌜äŒșäŒžäœƒäœ”äŒŒäœ†äœŁ"], -["a740","äœœäœ äŒŻäœŽäŒ¶äœ™äœäœˆäœšć…Œć…‹ć…ć…”ć†¶ć†·ćˆ„ćˆ€ćˆ©ćˆȘćˆšćŠ«ćŠ©ćŠȘćŠŹćŒŁćłć”ćć­ćžćŸćŠć‘Žć§ć‘†ć‘ƒćłć‘ˆć‘‚ć›ć©ć‘Šćčć»ćžćźć”ć¶ć ćŒć‘€ć±ć«ćŸćŹć›Șć›°ć›€ć›«ćŠć‘ć€ć"], -["a7a1","ć‡ćŽćœŸćććœ»ćŁŻć€ŸćŠćŠ’ćŠšćŠžćŠŁćŠ™ćŠ–ćŠćŠ€ćŠ“ćŠŠćŠ„ć­ć­œć­šć­›ćźŒćź‹ćźć°Źć±€ć±ć°żć°ŸćȐćȑćȔćČŒć·«ćžŒćșćș‡ćșŠć»·ćŒ„ćŒŸćœ€ćœąćœ·ćœčćż˜ćżŒćż—ćżćż±ćż«ćżžćżȘ戒我抄抗抖技扶抉扭把扌扟æ‰čæ‰łæŠ’æ‰ŻæŠ˜æ‰źæŠ•æŠ“æŠ‘æŠ†æ”č攻攞旱曎束李杏材村杜杖杞杉杆杠"], -["a840","æ“æ—æ­„æŻæ±‚æ±žæČ™æČæČˆæČ‰æČ…æČ›æ±Șæ±șæČæ±°æČŒæ±šæČ–æČ’汜æČƒæ±Č江汎æČ†æ±¶æČæČ”æČ˜æČ‚ç¶çŒçœçžç‰ąç‰Ąç‰ ç‹„ç‹‚çŽ–ç”Źç”«ç”·ç”žçš‚ç›ŻçŸŁç§ç§€çŠżç©¶çł»çœ•è‚–è‚“è‚è‚˜è‚›è‚šè‚Čè‰ŻèŠ’"], -["a8a1","芋芍芋角蚀谷豆豕èČè”€è”°è¶łèș«è»ŠèŸ›èŸ°èż‚èż†èż…èż„ć·Ąé‚‘é‚ąé‚Ș邩那酉釆里é˜Č队阱é˜Ș阏䞊äč–äčłäș‹äș›äșžäș«äșŹäœŻäŸäŸäœłäœżäœŹäŸ›äŸ‹äŸ†äŸƒäœ°äœ”䟈䜩䜻䟖䜟䟏䟑äœșć…”ć…’ć…•ć…©ć…·ć…¶ć…žć†œć‡œćˆ»ćˆžćˆ·ćˆșćˆ°ćˆźćˆ¶ć‰ćŠŸćŠ»ć’ć”ć“ć‘ćŠć·ćžćčć–ć”ć—ć‘łć‘”"], -["a940","ć’–ć‘žć’•ć’€ć‘»ć‘·ć’„ć’’ć’†ć‘Œć’ć‘±ć‘¶ć’Œć’šć‘ąć‘šć’‹ć‘œć’Žć›șćžƒć·ćȘć©ćĄćŠć€ćŒć€œć„‰ć„‡ć„ˆć„„ć„”ćŠŸćŠ»ć§”ćŠčćŠźć§‘ć§†ć§ć§ć§‹ć§“ć§ŠćŠŻćŠłć§’ć§…ć­Ÿć­€ć­Łćź—ćźšćź˜ćźœćź™ćź›ć°šć±ˆć±…"], -["a9a1","汆ćČ·ćČĄćČžćČ©ćČ«ćȱćȳ澘澚澖澕澛澑ćčžćșšćș—ćșœćș•ćș–ć»¶ćŒŠćŒ§ćŒ©ćŸ€ćŸćœżćœŒćżćż ćżœćż”ćżżæ€æ€”æ€Żæ€”æ€–æ€Șæ€•æ€Ąæ€§æ€©æ€«æ€›æˆ–æˆ•æˆżæˆŸæ‰€æ‰żæ‹‰æ‹Œæ‹„æŠżæ‹‚æŠčæ‹’æ‹›æŠ«æ‹“æ‹”æ‹‹æ‹ˆæŠšæŠœæŠŒæ‹æ‹™æ‹‡æ‹æŠ”æ‹šæŠ±æ‹˜æ‹–æ‹—æ‹†æŠŹæ‹Žæ”Ÿæ–§æ–Œæ—ș昔易昌昆昂明昀昏昕昊"], -["aa40","æ˜‡æœæœ‹æ­æž‹æž•æ±æžœæłæ·æž‡æžæž—æŻæ°æżæž‰æŸæžæ”æžšæž“æŒæȘæČæŹŁæ­Šæ­§æ­żæ°“æ°›æłŁæłšæłłæČ±æłŒæł„æČłæČœæČŸæČŒæłąæČ«æł•æł“æČžæł„æČčæłæČźæł—æł…æł±æČżæČ»æłĄæł›æłŠæČŹæłŻæłœæł–æł "], -["aaa1","ç‚•ç‚Žç‚’ç‚Šç‚™çˆŹçˆ­çˆžç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹çŽ©çŽšçŽŸçŽ«çŽ„ç”œç–ç–™ç–šçš„ç›‚ç›Č盎矄矜瀟焀焁秉秈ç©șç©čç«șçłŸçœ”çŸŒçŸ‹è€…è‚șè‚„è‚ąè‚±è‚Ąè‚«è‚©è‚Žè‚Șè‚Żè‡„è‡ŸèˆèŠłèŠèŠ™èŠ­èŠœèŠŸèŠčèŠ±èŠŹèŠ„èŠŻèŠžèŠŁèŠ°èŠŸèŠ·è™Žè™±ćˆèĄšè»‹èżŽèż”èż‘é‚”é‚žé‚±é‚¶é‡‡é‡‘é•·é–€é˜œé™€é˜żé˜»é™„"], -["ab40","陂éšč雹青非äșŸäș­äșźäżĄäŸ”äŸŻäŸżäż äż‘äżäżäżƒäŸ¶äż˜äżŸäżŠäż—äŸźäżäż„äż‚äżšäżŽäżžäŸ·ć…—ć†’ć†‘ć† ć‰Žć‰ƒć‰Šć‰ć‰Œć‰‹ć‰‡ć‹‡ć‹‰ć‹ƒć‹ćŒć—ć»ćŽšć›ć’Źć“€ć’šć“Žć“‰ć’žć’Šć’łć“‡ć“‚ć’œć’Ș擁"], -["aba1","ć“„ć“ˆć’Żć’«ć’±ć’»ć’©ć’§ć’żć›żćž‚ćž‹ćž ćžŁćžąćŸŽćžźćž“ć„•ć„‘ć„ć„Žć„ć§œć§˜ć§żć§Łć§šćšƒć§„ć§Șć§šć§Šćšć§»ć­©ćźŁćźŠćź€ćźąćź„ć°ć±Žć±ć±ć±‹ćł™ćł’ć··ćžćž„ćžŸćčœćș ćșŠć»șćŒˆćŒ­ćœ„ćŸˆćŸ…ćŸŠćŸ‹ćŸ‡ćŸŒćŸ‰æ€’æ€æ€ æ€„æ€Žæ€šææ°æšæąæ†æƒæŹæ«æȘæ€æ‰æ‹œæŒ–æŒ‰æ‹Œæ‹­æŒæ‹źæ‹œæŒ‡æ‹±æ‹·"], -["ac40","æ‹Żæ‹Źæ‹Ÿæ‹ŽæŒ‘æŒ‚æ”żæ•…æ–«æ–œæ—ąæ˜„æ˜­æ˜ æ˜§æ˜Żæ˜Ÿæ˜šæ˜±æ˜€æ›·æŸżæŸ“æŸ±æŸ”æŸæŸŹæž¶æžŻæŸ”æŸ©æŸŻæŸ„æŸ‘æžŽæŸšæŸ„æžžæŸæŸžæŸłæž°æŸ™æŸąæŸæŸ’æ­Șæźƒæź†æź”æŻ’æŻ—æ°Ÿæł‰æŽ‹æŽČæŽȘ攁掄掌掱掞掗"], -["aca1","æŽ»æŽœæŽŸæŽ¶æŽ›æł”æŽčæŽ§æŽžæŽ©æŽźæŽ”æŽŽæŽ«ç‚«ç‚șç‚łç‚Źç‚Żç‚­ç‚žç‚źç‚€çˆ°ç‰Čç‰Żç‰Žç‹©ç‹ ç‹ĄçŽ·çŠçŽ»çŽČçç€çŽłç”šç”­ç•ç•Œç•Žç•‹ç–«ç–€ç–„ç–ąç–Łç™žçš†çš‡çšˆç›ˆç›†ç›ƒç›…çœç›č盞眉看盟盌眇矜砂研砌砍焆焉焈焇çŠčçŠș科秒秋穿çȘç«żç«œç±œçŽ‚çŽ…çŽ€çŽ‰çŽ‡çŽ„çŽ†çŒžçŸŽçŸżè€„"], -["ad40","è€è€è€‘è€¶èƒ–èƒ„èƒšèƒƒèƒ„èƒŒèƒĄèƒ›èƒŽèƒžèƒ€èƒè‡Žèˆąè‹§èŒƒèŒ…è‹Łè‹›è‹ŠèŒ„è‹„èŒ‚èŒ‰è‹’è‹—è‹±èŒè‹œè‹”è‹‘è‹žè‹“è‹Ÿè‹ŻèŒ†è™è™č虻è™șèĄèĄ«èŠè§”èšˆèš‚èšƒèȞèČ è”Žè”łè¶Žè»è»Œèż°èżŠèżąèżȘèż„"], -["ada1","èż­èż«èż€èżšéƒŠéƒŽéƒéƒƒé…‹é…Šé‡é–‚é™é™‹é™Œé™éąé©éŸ‹éŸ­éŸłé éąšéŁ›éŁŸéŠ–éŠ™äč˜äșłć€Œć€ć€ŁäżŻć€Šć€„äżžć€©ć€–ć€†ć€Œć€Ÿć€šć€’ć€‘äżșć€€ć€”ć€šäż±ć€Ąć€‹ć€™ć€˜äżłäżźć€­ć€ȘäżŸć€«ć€‰ć…Œć†€ć†„ć†ąć‡ć‡Œć‡†ć‡‹ć‰–ć‰œć‰”ć‰›ć‰ćŒȘćżćŽŸćŽćŸć“šć”ć”ć”·ć“Œć“„ć“Č攆ć“ș攔擩擭擥攉擟ć“Ș"], -["ae40","ć“Šć”§ć”‡ć“œć”ćœƒćœ„ćŸ‚ćŸ”ćŸ‹ćŸƒć ‰ć€ć„—ć„˜ć„šćš‘ćš˜ćšœćšŸćš›ćš“ć§Źćš ćšŁćš©ćš„ćšŒćš‰ć­«ć±˜ćź°ćźłćź¶ćźŽćźźćź”ćźčćźžć°„ć±‘ć±•ć±ćł­ćłœćł»ćłȘ泚泰泶掁泎淟枭枫ćș«ćș­ćș§ćŒ±ćŸ’ćŸ‘ćŸæ™"], -["aea1","æŁæ„ææ•æ­æ©æŻæ‚„æ‚Ÿæ‚šæ‚æ‚”æ‚Œæ‚…æ‚–æ‰‡æ‹łæŒˆæ‹żæŽæŒŸæŒŻæ•æ‚æ†ææ‰æŒș捐挜æŒȘæŒ«æŒšææŒæ•ˆæ•‰æ–™æ—æ—…æ™‚æ™‰æ™æ™ƒæ™’æ™Œæ™…æ™æ›žæœ”æœ•æœ—æ Ąæ žæĄˆæĄ†æĄ“æ čæĄ‚æĄ”æ ©æąłæ —æĄŒæĄ‘æ œæŸŽæĄæĄ€æ ŒæĄƒæ ȘæĄ…æ “æ ˜æĄæźŠæź‰æź·æ°Łæ°§æ°šæ°Šæ°€æł°æ”Ș涕消涇攊攞攷攙涓"], -["af40","æ”Źæ¶‰æ”źæ”šæ”Žæ”©æ¶Œæ¶Šæ”čæ¶…攄涔烊烘烀烙烈烏çˆčç‰č狌ç‹čç‹œç‹žç‹·çŽ†ç­ç‰çźç çȘ珞畔畝畜畚留疟病症ç–Čç–łç–œç–Œç–č痂疞皋皰益盍盎眩真眠眚矩砰砧砞砝砎砷"], -["afa1","ç „ç ­ç  ç Ÿç Čç„•ç„ç„ ç„Ÿç„–ç„žç„ç„—ç„šç§€ç§Łç§§ç§Ÿç§Šç§©ç§˜çȘ„çȘˆç«™çŹ†çŹ‘çȉ管算箋箊箠箱箔箐箕箚箜箍箙箛çŒșçœŸçŸ”çż…çżè€†è€˜è€•è€™è€—è€œè€żèƒ±è„‚èƒ°è„…èƒ­èƒŽè„†èƒžèƒłè„ˆèƒœè„ŠèƒŒèƒŻè‡­è‡Źèˆ€èˆèˆȘèˆ«èˆšèˆŹèŠ»èŒ«è’è”èŠèŒžèè‰èŒ”èŒŽèèŒČèŒč茶茗荀茱茚荃"], -["b040","虔蚊èšȘèš“èš€èš©èšŒèšŁèšœèĄ°èĄ·èąèą‚èĄœèĄč蚘蚐蚎蚌蚕蚊蚗蚓蚖蚏蚑豈è±șè±čèČĄèČąè”·èșŹè»’è»”è»èŸ±é€é€†èż·é€€èżșèżŽé€ƒèżœé€…èżžé‚•éƒĄéƒéƒąé…’é…é…Œé‡˜é‡é‡—é‡œé‡™é–ƒé™ąé™Łé™Ą"], -["b0a1","é™›é™é™€é™˜é™žéš»éŁąéŠŹéȘšé«˜éŹ„éŹČéŹŒäčŸćșćœćœć‡ćƒćŒćšć‰ć„ć¶ćŽć•ć”ćŽć·ćć€ćŻć­ć…œć†•ć‡°ć‰Șć‰Żć‹’ć‹™ć‹˜ć‹•ćŒćŒćŒ™ćŒżć€ćŒŸćƒæ›Œć•†ć•Șć•Šć•„ć•žć•Ąć•ƒć•Šć”±ć•–ć•ć••ć”Żć•€ć”žć”źć•œć”Źć•Łć”łć•ć•—ćœˆćœ‹ćœ‰ćŸŸć …ć Šć †ćŸ ćŸ€ćŸșć ‚ć ”ćŸ·ćŸč怠愹暶橁橉橊ć©Șć©€"], -["b140","ćšŒć©ąć©šć©†ć©Šć­°ćŻ‡ćŻ…ćŻ„ćŻ‚ćźżćŻ†ć°‰ć°ˆć°‡ć± ć±œć±ćŽ‡ćŽ†ćŽŽćŽ›ćŽ–ćŽąćŽ‘ćŽ©ćŽ”ćŽ™ćŽ€ćŽ§ćŽ—ć·ąćžžćž¶ćžłćž·ćș·ćșžćș¶ćș”ćșŸćŒ”ćŒ·ćœ—ćœŹćœ©ćœ«ćŸ—ćŸ™ćŸžćŸ˜ćŸĄćŸ ćŸœæżæ‚Łæ‚‰æ‚ æ‚šæƒ‹æ‚ŽæƒŠæ‚œ"], -["b1a1","情悻悔惜悌惘惕惆惟悞惚惇戚戛扈掠控æČæŽ–æŽąæŽ„æ·æ§æŽ˜æŽȘæ±æŽ©æŽ‰æŽƒæŽ›æ«æŽšæŽ„æŽˆæŽ™æŽĄæŽŹæŽ’æŽæŽ€æ»æ©æšæșæ•æ•–æ•‘æ•™æ•—ć•Ÿæ•æ•˜æ••æ•”æ–œæ–›æ–Źæ—æ—‹æ—Œæ—Žæ™æ™šæ™€æ™šæ™Šæ™žæ›čć‹—æœ›æąæąŻæąąæą“æą”æĄżæĄ¶æą±æą§æą—æą°æąƒæŁ„æą­æą†æą…æą”æąæąšæąŸæąĄæą‚æŹČæźș"], -["b240","æŻ«æŻŹæ°«æ¶Žæ¶Œæ·łæ·™æ¶Čæ·Ąæ·Œæ·€æ·»æ·șæž…æ·‡æ·‹æ¶Żæ·‘æ¶źæ·žæ·č涞混淔淅淒枚涔淚淫淘æ·Șæ·±æ·źæ·šæ·†æ·„æ¶Șæ·Źæ¶żæ·Šçƒčç„‰ç„ŠçƒœçƒŻçˆœç‰œçŠçŒœçŒ›çŒ–çŒ“çŒ™çŽ‡ç…çŠçƒç†çŸçç“ ç“¶"], -["b2a1","ç“·ç”œç”ąç•„ç•Šç•ąç•°ç–ç—”ç—•ç–”ç—Šç—çšŽç›”ç›’ç››çœ·çœŸçœŒçœ¶çœžçœșçĄ«çĄƒçĄŽç„„ç„šç„­ç§»çȘ’çȘ•珠珚珛珏珊珙珞珟çȒçȗçČ•ç”†ç”ƒç”±çŽźçŽčçŽŒç”€çŽ°çŽłç”„çŽŻç”‚çŽČçŽ±çŒœçŸžçŸšçżŒçżŽçż’è€œèŠè†è„Żè„–è„Łè„«è„©è„°è„€èˆ‚èˆ”èˆ·èˆ¶èˆčèŽŽèŽžèŽ˜èžèŽąèŽ–èŽœèŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è·è»èŒ"], -["b340","莆莧處ćœȘè›‡è›€èš¶è›„èš”è›†è›‹èš±èšŻè›‰èĄ“èąžèąˆèą«èą’èą–èąèą‹èŠ“èŠèšȘèšèšŁèš„èš±èš­èšŸèš›èšąè±‰è±šèČ©èČŹèČ«èČšèČȘèČ§è”§è”Šè¶Ÿè¶șè»›è»Ÿé€™é€é€šé€—é€Łé€Ÿé€é€é€•é€žé€ é€é€ąé€–é€›é€”"], -["b3a1","éƒšéƒ­éƒœé…—é‡Žé‡”é‡Šé‡Łé‡§é‡­é‡©é–‰é™Ș陔陳陞陰陎陶陷陏雀é›Șé›©ç« ç«Ÿé ‚é ƒé­šéł„éč”éčżéș„éș»ć‚ąć‚ć‚…ć‚™ć‚‘ć‚€ć‚–ć‚˜ć‚šæœ€ć‡±ć‰Čć‰Žć‰”ć‰©ć‹žć‹ć‹›ćšćŽ„ć•»ć–€ć–§ć•Œć–Šć–ć–˜ć–‚ć–œć–Șć–”ć–‡ć–‹ć–ƒć–łć–źć–Ÿć”Ÿć–Čć–šć–»ć–Źć–±ć•Ÿć–‰ć–«ć–™ćœć Żć Șć Žć €ć °ć ±ć Ąć ć  ćŁčćŁșć„ "], -["b440","ć©·ćȘšć©żćȘ’ćȘ›ćȘ§ć­łć­±ćŻ’ćŻŒćŻ“ćŻć°Šć°‹ć°±ć”Œć”ćŽŽć”‡ć·œćč…ćžœćč€ćčƒćčŸć»Šć»ć»‚ć»„ćŒŒćœ­ćŸ©ćŸȘćŸšæƒ‘æƒĄæ‚Čæ‚¶æƒ æ„œæ„Łæƒșæ„•æƒ°æƒ»æƒŽæ…šæƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽŁæŽŒææ€æ©æ‰æ†æ"], -["b4a1","æ’æŁææĄæ–æ­æźæ¶æŽæȘ換摒揚æčæ•žæ•Šæ•ąæ•Łæ–‘æ–æ–Żæ™źæ™°æ™Žæ™¶æ™Żæš‘æ™șæ™Ÿæ™·æ›Ÿæ›żæœŸæœæŁșæŁ•æŁ æŁ˜æŁ—æ€…æŁŸæŁ”æŁźæŁ§æŁčæŁ’æŁČæŁŁæŁ‹æŁæ€æ€’æ€ŽæŁ‰æŁšæ„źæŁ»æŹŸæŹșæŹœæź˜æź–æźŒæŻŻæ°źæ°Żæ°ŹæžŻæžžæč”æžĄæžČæč§æčŠæž æž„æžŁæž›æč›æč˜æž€æč–æčźæž­æžŠæčŻæžŽæčæžșæžŹæčƒæžæžŸæ»‹"], -["b540","æș‰æž™æčŽæčٿ脿čȿ詿čŸç„™ç„šç„Šç„°ç„Ąç„¶ç…źç„œç‰ŒçŠ„çŠ€çŒ¶çŒ„猎猩çșçȘ琳琹琄琔琶琎琯琛琊琚甄甊畫ç•Șç—ąç—›ç—Łç—™ç—˜ç—žç— ç™»ç™Œçš–çš“çšŽç›œççŸ­çĄçĄŹçĄŻçšçšˆçš‹çš…çš€çȘ˜"], -["b5a1","çȘ—çȘ–ç«„ç«Łç­‰ç­–ç­†ç­ç­’ç­”ç­ç­‹ç­ç­‘çȟçȄ甞甐甚甕玫生ç”Čç”Ąç”Šç”ąç”°ç”łć–„çż”çż•è€‹è’è‚…è…•è…”è…‹è…‘è…Žè„čè…†è„Ÿè…Œè…“è…Žèˆ’èˆœè©èƒèžèè è…è‹èèŻè±èŽè‘—èŠè°èŒèŒèœèČèŠèžèŽè„èœè‡è”èŸè™›è›Ÿè›™è›­è›”è››è›€è›è›žèĄ—èŁèŁ‚èą±èŠƒèŠ–èš»è© è©•è©žèšŒè©"], -["b640","詔詛詐詆蚎èšșèš¶è©–è±ĄèȂèČŻèČŒèČłèČœèłèČ»èł€èČŽèČ·èȶèČżèČžè¶Šè¶…è¶è·Žè·è·‹è·šè·‘è·Œè·›è·†è»»è»žè»ŒèŸœé€źé€”é€±é€žé€Čé€¶é„‚éƒ”é„‰éƒŸé…Łé…„é‡éˆ”éˆ•éˆŁéˆ‰éˆžéˆéˆéˆ‡éˆ‘é–”é–é–‹é–‘"], -["b6a1","間閒閎隊階隋陜隅隆隍é™Č隄雁雅雄集雇雯é›Č韌項順須飧éŁȘ飯飩éŁČéŁ­éŠźéŠ­é»ƒé»é»‘äș‚ć‚­ć‚”ć‚Čć‚łćƒ…ć‚Ÿć‚Źć‚·ć‚»ć‚Żćƒ‡ć‰żć‰·ć‰œć‹Ÿć‹Šć‹€ć‹ąć‹ŁćŒŻć—Ÿć—šć—“ć—Šć—Žć—œć—‡ć—‘ć—Łć—€ć—Żć—šć—Ąć—…ć—†ć—„ć—‰ćœ’ćœ“ćĄžćĄ‘ćĄ˜ćĄ—ćĄšćĄ”ćĄ«ćĄŒćĄ­ćĄŠćĄąćĄ’ćĄ‹ć„§ć«ć«‰ć«ŒćȘŸćȘœćȘŒ"], -["b740","ćȘłć«‚ćȘČ攩支ćčŒćččć»‰ć»ˆćŒ’ćœ™ćŸŹćŸźæ„šæ„æ…ˆæ„Ÿæƒłæ„›æƒčæ„æ„ˆæ…Žæ…Œæ…„æ…æ„Ÿæ„Žæ„§æ„æ„†æ„·æˆĄæˆąæ“æŸæžæȘæ­æœæŹææœæ”ææ¶æ–æ—æ†æ•Źæ–Ÿæ–°æš—æš‰æš‡æšˆæš–æš„æš˜æšæœƒæŠ”æ„­"], -["b7a1","愚愷愠愔愔怰抂愊愚愫愞愓æ„čæŠ†æ„æ„Łæ„›æ­‡æ­ČæŻ€æźżæŻ“æŻœæșąæșŻæ»“æș¶æ»‚æșæșæ»‡æ»…æș„æș˜æșŒæșșæș«æ»‘æș–æșœæ»„æ»”æșȘæș§æșŽç…Žç…™ç…©ç…€ç…‰ç…§ç…œç…Źç…Šç…Œç…„煞煆煹煖çˆșç‰’çŒ·ç…çŒżçŒŸç‘Żç‘šç‘•ç‘Ÿç‘žç‘çżç‘™ç‘›ç‘œç•¶ç•žç˜€ç—°ç˜ç—Č痱ç—șç—żç—Žç—łç›žç›Ÿç›ç«çŠçžçŁ"], -["b840","çčçȘçŹçœç„çšçąçŸźçąŽçą°çą—çą˜çąŒçą‰çĄŒçą‘çą“çĄżç„șç„żçŠèŹçŠœçšœçššçš çš”çšŸçšžçȘŸçȘ ç­·çŻ€ç­ ç­źç­§çȱçČłçȔ經ç”čç¶‘ç¶ç¶ç”›çœźçœ©çœȘçœČçŸ©çŸšçŸ€è–è˜è‚†è‚„è…±è…°è…žè…„è…źè…łè…«"], -["b8a1","è…čè…șè…Šèˆ…è‰‡è’‚è‘·èœè±è‘”è‘Šè‘«è‘‰è‘Źè‘›èŒè”è‘Ąè‘Łè‘©è‘­è‘†è™žè™œè™Ÿè›čèœ“èœˆèœ‡èœ€è›Ÿè›»èœ‚èœƒèœ†èœŠèĄ™èŁŸèŁ”èŁ™èŁœèŁ˜èŁèŁĄèŁŠèŁ•èŁ’èŠœè§Łè©«è©Čè©łè©Šè©©è©°èȘ‡è©Œè©ŁèȘ è©±èȘ…è©­è©ąè©źè©Źè©čè©»èšŸè©šè±ąèȊèČ‰èłŠèł‡èłˆèł„èČČèłƒèł‚èł…è·Ąè·Ÿè·šè·Żè·łè·șè·Ș跀跊èșČ范茉軟茊"], -["b940","蟟èŸČé‹éŠé“é‚é”é€Œé•éé‡ééŽéé‘é€Ÿéé„’é„—é…Źé…Ș酩釉鈷鉗鈞鈜鉀鈟鉛鉋鉀鉑鈎鉉鉍鉅éˆčéˆżé‰šé–˜éš˜éš”éš•é›é›‹é›‰é›Šé›·é›»é›čé›¶é–éŽé¶é é ‘é “é Šé ’é ŒéŁŒéŁŽ"], -["b9a1","éŁœéŁŸéŠłéŠ±éŠŽé«Ąéł©éș‚éŒŽéŒ“éŒ ćƒ§ćƒźćƒ„ćƒ–ćƒ­ćƒšćƒ•ćƒćƒ‘ćƒ±ćƒŽćƒ©ć…ąć‡łćŠƒćŠ‚ćŒ±ćŽ­ć—Ÿć˜€ć˜›ć˜—ć—œć˜”ć˜†ć˜‰ć˜ć˜Žć—·ć˜–ć˜Ÿć˜ˆć˜ć—¶ćœ˜ćœ–ćĄ”ćĄŸćąƒćą“ćąŠćĄčćą…ćĄœćŁœć€„ć€ąć€€ć„Șć„©ć«Ąć«Šć«©ć«—ć«–ć«˜ć«Łć­”ćŻžćŻ§ćŻĄćŻ„ćŻŠćŻšćŻąćŻ€ćŻŸć°ć±ąć¶„ć¶‡ćč›ćčŁćč•ćč—ćč”ć»“ć»–ćŒŠćœ†ćœ°ćŸč慇"], -["ba40","æ„żæ…‹æ…·æ…ąæ…Łæ…Ÿæ…šæ…˜æ…”æˆȘ撇摘摔撀摞摟æ‘ș摑摧搎摭摻æ•Čæ–Ąæ——æ—–æšąæššæšæŠœæŠšæŠ•æ§æŠźæ§“æ§‹æŠ›æŠ·æŠ»æŠ«æŠŽæ§æ§æŠ­æ§ŒæŠŠæ§ƒæŠŁæ­‰æ­Œæ°łæŒłæŒ”æ»ŸæŒ“æ»ŽæŒ©æŒŸæŒ æŒŹæŒæŒ‚æŒą"], -["baa1","æ»żæ»ŻæŒ†æŒ±æŒžæŒČæŒŁæŒ•æŒ«æŒŻæŸˆæŒȘæ»ŹæŒæ»Čæ»Œæ»·ç†”ç†™ç…œç†Šç†„ç†’çˆŸçŠ’çŠ–ç„çç‘€ç‘Łç‘Șç‘°ç‘­ç”„ç–‘ç˜§ç˜ç˜‹ç˜‰ç˜“ç›Ąç›Łçž„çœçżçĄçŁçąŸçą§çąłçą©çąŁçŠŽçŠçŠçšźçš±çȘȘçȘ©ç«­ç«ŻçźĄçź•矋答缗缝缔缏缾缇缄çČčçČœçČŸç¶»ç¶°ç¶œç¶œç¶Ÿç¶ ç·Šç¶Žç¶Čç¶±ç¶ș綹綿綔綞維緒緇綏"], -["bb40","çœ°çż çżĄçżŸèžèšè‚‡è…è†€è†è†ˆè†Šè…żè†‚è‡§è‡șèˆ‡èˆ”èˆžè‰‹è“‰è’żè“†è“„è’™è’žè’Čè’œè“‹è’žè“€è““è’è’Œè“‘è“Šèœżèœœèœ»èœąèœ„èœŽèœ˜è•èœ·èœ©èŁłè€‚èŁŽèŁčèŁžèŁœèŁšè€šèŁŻèȘŠèȘŒèȘžèȘŁèȘèȘĄèȘ“èȘ€"], -["bba1","èȘȘèȘ„èȘšèȘ˜èȘ‘èȘšèȘ§è±ȘèȍèČŒèł“èł‘èł’è”«è¶™è¶•è·ŒèŒ”èŒ’èŒ•èŒ“èŸŁé é˜éœéŁé™éžéąéé›é„™é„˜é„žé…”é…žé…·é…Žé‰žéŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠšé‰ŒéŠ‘é–Ąé–šé–©é–Łé–„é–€éš™éšœéš›é›Œé›’éœ€éŒéž…éŸ¶é —é ˜éąŻéą±é€ƒé€…é€Œé€‰é§éȘŻéȘ°é«Šé­é­‚鳎鳶鳳éșŒéŒ»éœŠć„„ć„€ćƒ»ćƒ”ćƒč愂愈愉愅懜"], -["bc40","抇抈抉抍把拰ćŽČ星昻ć˜čć˜Čć˜żć˜Žć˜©ć™“ć™Žć™—ć™Žć˜¶ć˜Żć˜°ćą€ćąŸćąžćąłćąœćąźćą©ćąŠć„­ćŹ‰ć«»ćŹ‹ć«”ćŹŒćŹˆćŻźćŻŹćŻ©ćŻ«ć±€ć±„ć¶ć¶”ćčąćčŸćčĄć»ąć»šć»Ÿć»ć»Łć» ćœˆćœ±ćŸ·ćŸ”æ…¶æ…§æ…źæ…æ…•æ†‚"], -["bca1","æ…Œæ…°æ…«æ…Ÿæ†§æ†æ†«æ†Žæ†Źæ†šæ†€æ†”æ†źæˆźæ‘©æ‘Żæ‘č撞æ’Čæ’ˆæ’æ’°æ’„æ’“æ’•æ’©æ’’æ’źæ’­æ’«æ’šæ’Źæ’™æ’ąæ’łæ•”æ•·æ•žæšźæš«æšŽæš±æšŁæšŸæ§šæšæšžæš™æ§œæšĄæš“æšŠæ§łæš‚æš…æ§­æš‘æ­æ­Žæź€æŻ…æŻ†æŒżæœŒæŸ„æœ‘æœŠæœ”æŸ†æœ­æœ›æœžæœźæŸŽæœșæœ°æœ€æŸ—æœ˜æ»•æœŻæœ æœŸç†Ÿç†Źç†±ç†šç‰–çŠ›çŽç—ç‘©ç’‹ç’ƒ"], -["bd40","ç‘Ÿç’€ç•żç˜ ç˜©ç˜Ÿç˜€ç˜Šç˜Ąç˜ąçššçšșç›€çžŽçž‡çžŒçž‘çž‹çŁ‹çŁ…çąșçŁŠçąŸçŁ•çąŒçŁçšżçšŒç©€çšœçš·çš»çȘŻçȘźçź­çź±çŻ„çźŽçŻ†çŻ‡çŻçź çŻŒçłŠç· ç·Žç·Żç·»ç·˜ç·Źç·ç·šç·Łç·šç·žç·©ç¶žç·™ç·Čç·čçœ”çœ·çŸŻ"], -["bda1","çż©è€Šè†›è†œè†è† è†šè†˜è”—è”œè”šè“źè”Źè”­è”“è”‘è”Łè”Ąè””è“Źè”„è“żè”†èž‚èŽè¶è èŠèžèšè™è—èŒè“èĄ›èĄè€è€‡è€’è€“è€•è€ŠèȘŒè«’談諄èȘ•請諞èȘČ諉諂èȘżèȘ°è«–諍èȘ¶èȘčè«›è±Œè±Žè±Źèł èłžèłŠèł€èłŹèł­èłąèłŁèłœèłȘèłĄè”­è¶Ÿè¶Łèž«èžèžèžąèžèž©èžŸèžĄèžžèșș茝茛茟茩茊èŒȘ茜茞"], -["be40","èŒ„é©éźéšé­é·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…éŠ»éŠ·é‹ȘéŠŹé‹€é‹éŠłéŠŒé‹’é‹‡é‹°éŠČé–­é–±éœ„éœ†éœ‡éœ‰é éžéž‹éžé Ąé «é œéąłé€Šé€“é€’é€˜é§é§é§Ÿé§›é§‘é§•é§’é§™éȘ·é«źé«ŻéŹ§é­…é­„é­·é­ŻéŽ†éŽ‰"], -["bea1","鎃éș©éșŸé»Žćąšéœ’ć„’ć„˜ć„”ć„ć„•ć†€ć†Șć‡ćŠ‘ćŠ“ć‹łć™™ć™«ć™č晩晀晞ć™Șć™šć™„ć™±ć™Żć™Źć™ąć™¶ćŁćąŸćŁ‡ćŁ…ć„źćŹćŹŽć­žćŻ°ć°ŽćœŠæ†Čæ†‘æ†©æ†Šæ‡æ†¶æ†Ÿæ‡Šæ‡ˆæˆ°æ“…æ“æ“‹æ’»æ’Œæ“šæ“„æ“‡æ“‚æ“æ’żæ“’æ“”æ’Ÿæ•Žæ›†æ›‰æšč曄曇暞暜暞æšș橙橫橘æščæ©„æ©ąæ©Ąæ©‹æ©‡æš”æ©Ÿæ©ˆæ­™æ­·æ°…æż‚æŸ±æŸĄ"], -["bf40","æżƒæŸ€æżæŸ§æŸłæż€æŸč柶柊柠柎熟燉燐燒燈燕ç†č燎燙燜燃燄獹璜璣璘璟璞瓱甌甍瘮瘾ç˜șç›§ç›„çž çžžçžŸçž„çŁšçŁšçŁŹçŁ§çŠŠç©ç©Žç©†ç©Œç©‹çȘș篙簑築節篛篥篩篊糕糖瞊"], -["bfa1","羑羈羛羣羞羝羉羐çœčçŸČçż°çż±çżźè€šè†łè†©è†šè‡»èˆˆè‰˜è‰™è•Šè•™è•ˆè•šè•©è•ƒè•‰è•­è•Șè•žèžƒèžŸèžžèžąèžèĄĄè€Șè€Čè€„è€«è€ĄèŠȘ芊諊è«șè««è«±èŹ€è«œè«§è«źè«ŸèŹèŹ‚è«·è«­è«łè«¶è«Œè±«è±­èČ“èłŽèč„螱螎èč‚èžčèž”èŒ»èŒŻèŒžèŒłèŸšèŸŠé”éŽéžéČ遌éșé„Žé†’éŒ éŒ¶é‹žéŒłéŒŻéŒąé‹ŒéŒ«éŒ„éŒš"], -["c040","éŒéŒŠéŒĄéŒ•éŒźéŒ™é–»éš§éššéšȘ雕霎霑霖霍霓霏靛靜靊鞘頰頞頻頷頭é č頀逐通逞逛逥通駭駹駱éȘžéȘŒé«»é«­éŹšéź‘éŽ•éŽŁéŽŠéŽšéŽ’éŽ›é»˜é»”éŸéŸœć„Ș感愡ć„Č拔暎暀暐暅暇"], -["c0a1","暏棕棓棑棎欰ćŹȘ揀ć­șć°·ć±šć¶Œć¶șć¶œć¶žćč«ćœŒćŸœæ‡‰æ‡‚懇懊懋æˆČæˆŽæ“Žæ“Šæ“˜æ“ æ“°æ“Šæ“Źæ“±æ“ąæ“­æ–‚æ–ƒæ›™æ›–æȘ€æȘ”æȘ„æȘąæȘœæ«›æȘŁæ©ŸæȘ—æȘæȘ æ­œæźźæŻšæ°ˆæż˜æż±æżŸæż æż›æż€æż«æżŻæŸ€æżŹæżĄæż©æż•æżźæż°ç‡§ç‡Ÿç‡źç‡Šç‡„ç‡­ç‡Źç‡Žç‡ çˆ”ç‰†ç°çČ璩環璊璚癆療癌ç›Ș瞳çžȘ瞰瞬"], -["c140","çž§çž­çŸŻçŁ·çŁș磎磯瀁犧çŠȘ穗çȘżç°‡ç°çŻŸçŻ·ç°ŒçŻ çł çłœçłžçłąçłŸçł™çłçžźçžŸçč†çž·çžČçčƒçž«çžœçž±çč…çčçžŽçžčçčˆçž”çžżçžŻçœ„çżłçżŒè±èČè°èŻèłè‡†è‡ƒè†șè‡‚è‡€è†żè†œè‡‰è†Ÿè‡šèˆ‰è‰±è–Ș"], -["c1a1","è–„è•Ÿè–œè–‘è–”è–Żè–›è–‡è–šè–Šè™§èŸ€èŸ‘èžłèŸ’èŸ†èž«èž»èžșèŸˆèŸ‹è€»è€¶è„„è€žè€œèŠŹèŹŽèŹ—èŹ™èŹ›èŹŠèŹ èŹèŹ„èŹè±è°żè±łèłșèłœèłŒèłžèł»è¶šèč‰èč‹èčˆèčŠèœ„èŒŸèœ‚èœ…èŒżéżéœé‚„é‚é‚‚é‚€é„čé†Łé†žé†œééŽ‚éŒšé”éŠé„é‹éŒ˜éŸéŹé›é°éšé”é—Šé—‹é—Œé—ˆé—†éš±éšžé›–éœœéœžéž éŸ“éĄ†éą¶é€”éš"], -["c240","é§żéźźéź«éźȘ韭鎻鎿éș‹é»é»žé»œé»é»›éŒŸéœ‹ćąćš•ćšźćŁ™ćŁ˜ćŹžćœæ‡Łæˆłæ“Žæ“Č擟攆æ“ș擻擷斷曜朊æȘłæȘŹæ«ƒæȘ»æȘžæ«‚æȘźæȘŻæ­Ÿæ­žæźŻç€‰ç€‹æżŸç€†æżșç€‘ç€ç‡»ç‡Œç‡Ÿç‡žç·ç”ç’§ç’żç”•ç™–ç™˜"], -["c2a1","ç™’çžœçžżçž»çžŒç€ŽçŠźç©Ąç©ąç© ç«„ç«…ç°«ç°§ç°Ș簞簣簡糧çč”çč•çčžçčšçčĄçč’çč™çœˆçżčçż»è·è¶è‡è‡èˆŠè—è–©è—è—è—‰è–°è–șè–čè–ŠèŸŻèŸŹèŸČ蟠芆èŠČè§ŽèŹšèŹčèŹŹèŹ«è±èŽ…èč™èčŁèčŠèč€èčŸèč•è»€èœ‰èœé‚‡é‚ƒé‚ˆé†«é†Źé‡éŽ”éŽŠéŽ–éŽąéŽłéŽźéŽŹéŽ°éŽ˜éŽšéŽ—é—”é—–é—é—•é›ąé›œé›™é››é›žéœ€éžŁéžŠ"], -["c340","鞭éŸč額顏題顎顓éąșé€Ÿé€żé€œé€źéŠ„éšŽé«éŹƒéŹ†é­é­Žé­éŻŠéŻ‰éŻœéŻˆéŻ€é”‘é”é” é» éŒ•éŒŹć„łćš„ćŁžćŁŸćŁąćŻ”éŸć»Źæ‡Čæ‡·æ‡¶æ‡”æ”€æ”æ› æ›æ«„æ«æ«šæ«“ç€›ç€Ÿç€šç€šç€ç€•ç€˜çˆ†çˆç‰˜çŠąçž"], -["c3a1","çșç’œç“Šç“Łç–‡ç–†ç™Ÿç™ĄçŸ‡ç€™çŠ±ç©«ç©©ç°Ÿç°żç°žç°œç°·ç±€çč«çč­çččçč©çčȘ矅çčłçŸ¶çŸč矞臘藩藝è—Ș藕藀藄藷蟻蠅蠍èŸč蟟脠脟脖脞譁譜識證譚譎譏譆譙莈莊èčŒèčČèș‡èč¶èčŹèčșèčŽèœ”èœŽèŸ­é‚Šé‚‹é†±é†źéĄé‘éŸéƒéˆéœéé–éąéé˜é€é—éšé—œéšŽé›ŁéœȘéœ§éĄéŸœéŸ»éĄž"], -["c440","éĄ˜éĄ›éąŒé„…é„‰éš–éš™éŹéŻšéŻ§éŻ–éŻ›é¶‰é”Ąé”Čé”Ș锏éș’éș—éș“éșŽć‹žćššćš·ćš¶ćšŽćšŒćŁ€ć­€ć­ƒć­œćŻ¶ć·‰æ‡žæ‡șæ”˜æ””æ”™æ›Šæœ§æ«Źç€Ÿç€°ç€Čçˆç»ç“ç™ąç™„ç€Šç€Șç€Źç€«ç«‡ç«¶ç±Œç±ƒç±çłŻçł°èŸźçčœçčŒ"], -["c4a1","çș‚県耀臚艊藻è—č蘑è—ș蘆蘋蘇蘊蠔蠕脀èŠșè§žè­°è­Źè­Šè­Żè­Ÿè­«èŽèŽèș‰èșèș…èș‚é†Žé‡‹é˜éƒéœé—Ąéœ°éŁ„é„’é„‘éŠšéš«éš°éš·éš”é°“é°éččéș”é»šéŒŻéœŸéœŁéœĄć„·ć„žć›ć›€ć›‚ć€”ć±Źć·æ‡Œæ‡Ÿæ”æ”œæ–•æ›©æ«»æŹ„æ«șæźČ灌爛犧瓖瓔癩矓籐çșçșŒçŸŒè˜—è˜­è˜šè Łè ąè Ąè Ÿè„Șè„ŹèŠœè­Ž"], -["c540","護譜莓èșŠèșèș‹èœŸèŸŻé†ș鐟鐳鐔éș鐞éČé«é—ąéœžéœčéœČéŸżéĄ§éĄ„é„—é©…é©ƒé©€éšŸé«é­”é­‘é°­é°„é¶Żé¶Žé·‚é¶žéșé»ŻéŒ™éœœéœŠéœ§ć„Œć„»ć›ˆć›Šć›‰ć­żć·”ć·’ćœŽæ‡żæ”€æŹŠæ­Ąç‘ç˜çŽ€ç“€ç–Šç™źç™Ź"], -["c5a1","çŠłç± ç±ŸèŸèœè‡Ÿè„Čè„Żè§Œèź€èŽ–èŽ—èș‘èș“èœĄé…ˆé‘„é‘‘é‘’éœœéœŸéŸƒéŸéĄ«é„•é©•é©é«’éŹšé±‰é°±é°Ÿé°»é·“é·—éŒŽéœŹéœȘéŸ”ć›Œć·–æˆ€æ”Łæ”«æ”Șæ›ŹæŹç“šç«Šç±€ç±Łç±„çș“çș–çș”è‡ąè˜žè˜żè ±èźŠé‚é‚é‘Łé‘ é‘€éšéĄŻé„œé©šé©›é©—é«“é«”é«‘é±”é±—é±–é·„éșŸé»Žć›‘ćŁ©æ”Źçžç™±ç™Č矗眐矈蠶è čèĄąèź“èź’"], -["c640","èź–è‰·èŽ›é‡€é‘Șé‚éˆé„éŸ†éĄ°é©ŸéŹąé­˜é±Ÿé·čé·șéčŒéčœéŒ‡éœ·éœČć»łæŹ–çŁç±Źç±źè »è§€èșĄé‡é‘Čé‘°éĄ±é„žé«–éŹŁé»Œç€çŸšèźšé‘·éŸ‰é©ąé©„çșœèźœèșȘé‡…é‘œé‘Ÿé‘Œé±·é±žé»·è±”é‘żéžšçˆšé©Ș鏱鞛鞞ç±Č"], -["c940","äč‚äčœć‡”挚掂侇侌äč‡äșć›—ïšŒć±źćœłäžć†‡äžŽäžźäș“ä»‚ä»‰ä»ˆć†˜ć‹ŒćŹćŽčćœ ć€ƒć€Źć°ć·żæ—ĄæźłæŻŒæ°”çˆżäž±äžŒä»šä»œä»©ä»Ąä»ä»šćˆŒćŒœćŒćœąćœŁć€—ć€Żćźćź„ć°’ć°»ć±Žć±łćž„ćș€ćș‚ćż‰æˆ‰æ‰æ°•"], -["c9a1","æ°¶æ±ƒæ°żæ°»çŠźçŠ°çŽŠçŠžè‚Šé˜žäŒŽäŒ˜äŒŹä»”äŒ”ä»±äŒ€ä»·äŒˆäŒäŒ‚äŒ…äŒąäŒ“äŒ„ä»ŽäŒ’ć†±ćˆ“ćˆ‰ćˆćŠŠćŒąćŒŸććŽŠć‡ć›Ąć›ŸćœźćœȘćœŽć€ŒćŠ€ć„ŒćŠ…ć„»ć„Ÿć„·ć„żć­–ć°•ć°„ć±Œć±șć±»ć±Ÿć·Ÿćč”ćș„ćŒ‚ćŒšćœŽćż•ćż”ćżæ‰œæ‰žæ‰€æ‰Ąæ‰Šæ‰ąæ‰™æ‰ æ‰šæ‰„æ—Żæ—źæœŸæœč朞朻æœșæœżæœŒæœłæ°˜æ±†æ±’æ±œæ±æ±Šæ±”æ±‹"], -["ca40","汌灱牞犎犔玎ç”Șç™żç©”çœ‘è‰žè‰ŒèŠ€è‰œè‰żè™è„Ÿé‚™é‚—é‚˜é‚›é‚”é˜ąé˜€é˜ é˜Łäœ–äŒ»äœąäœ‰äœ“äœ€äŒŸäœ§äœ’äœŸäœäœ˜äŒ­äŒłäŒżäœĄć†ć†č戜戞戡抭押按捣ćČćŽŽćŽć°ć·ćȘć‘”ć‘…ć™ćœć„ć˜"], -["caa1","ćœć‘ć‘ćšć€ć‘‡ć›źć›§ć›„ćć…ćŒć‰ć‹ć’ć€†ć„€ćŠŠćŠ˜ćŠ ćŠ—ćŠŽćŠąćŠćŠćŠ§ćŠĄćźŽćź’ć°šć°ȘćȍćȏćȈćȋćȉćȒćȊćȆćȓćȕ淠枊枎ćș‹ćș‰ćșŒćșˆćșćŒ…ćŒćœžćœ¶ćż’ćż‘ćżćż­ćżšćżźćżłćżĄćż€ćżŁćżșćżŻćż·ćż»æ€€ćżŽæˆș抃抌抎抏抔抇扱扻æ‰ș扰抁抈扷扜æ‰Čæ‰Žæ”·æ—°æ—Žæ—łæ—Č旔杅杇"], -["cb40","æ™æ•æŒæˆæææšæ‹æŻæ°™æ°šæ±žæ±§æ±«æČ„æČ‹æČæ±±æ±Żæ±©æČšæ±­æČ‡æČ•æČœæ±Šæ±łæ±„æ±»æČŽçŽçșç‰ŁçŠżçŠœç‹ƒç‹†ç‹çŠș狅玕玗玓玔玒ç”șç”č疔疕皁瀜耎肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","èŠŠèŠƒèŠ„è±žèż‰èŸżé‚Ÿé‚Ąé‚„é‚žé‚§é‚ é˜°é˜šé˜Żé˜­äžłäŸ˜äœŒäŸ…äœœäŸ€äŸ‡äœ¶äœŽäŸ‰äŸ„äœ·äœŒäŸ—äœȘ䟚äœčäŸäœžäŸäŸœäŸ”äŸžäŸ’äŸ‚äŸ•äœ«äœźć†žć†Œć†Ÿćˆ”ćˆČćˆłć‰†ćˆ±ćŠŒćŒŠćŒ‹ćŒŒćŽ’ćŽ”ć’‡ć‘żć’ć’‘ć’‚ć’ˆć‘«ć‘șć‘Ÿć‘„ć‘Źć‘Žć‘Šć’ć‘Żć‘Ąć‘ ć’˜ć‘Łć‘§ć‘€ć›·ć›č杯ćČć­ć«ć±ć°ć¶ćž€ć”ć»ćłćŽćą"], -["cc40","ćšćœć€Œć„…ćŠ”ćŠș槏槎ćŠČć§Œć§ćŠ¶ćŠŒć§ƒć§–ćŠ±ćŠœć§€ć§ˆćŠŽć§‡ć­ąć­„ćź“ćź•ć±„ć±‡ćČźćČ€ćČ ćČ”ćČŻćČšćČŹćȟćČŁćČ­ćČąćČȘćȧćȝćČ„ćȶćȰćČŠćž—ćž”ćž™ćŒšćŒąćŒŁćŒ€ćœ”ćŸ‚ćœŸćœœćżžćż„æ€­æ€Šæ€™æ€Č怋"], -["cca1","æ€Žæ€Šæ€—æ€łæ€šæ€žæ€Źæ€ąæ€æ€æ€źæ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆœæŠ­æŠŽæ‹‘æŠŸæŠȘæŠ¶æ‹ŠæŠźæŠłæŠŻæŠ»æŠ©æŠ°æŠžæ”œæ–šæ–»æ˜‰æ—Œæ˜„æ˜’æ˜ˆæ—»æ˜ƒæ˜‹æ˜æ˜…æ—œæ˜‘æ˜æ›¶æœŠæž…æŹæžŽæž’æ¶æ»æž˜æž†æž„æŽæžæžŒæș枟枑枙枃杜极杞æčæž”æŹ„æź€æ­ŸæŻžæ°æČ“æłŹæł«æłźæł™æČ¶æł”æČ­æł§æČ·æłæł‚æČșæłƒæł†æł­æłČ"], -["cd40","æł’æłæČ޿ȊæČæČ€æłžæł€æŽ°æłæł‡æČ°æłčæłæł©æł‘ç‚”ç‚˜ç‚…ç‚“ç‚†ç‚„ç‚‘ç‚–ç‚‚ç‚šç‚ƒç‰Șç‹–ç‹‹ç‹˜ç‹‰ç‹œç‹’ç‹”ç‹šç‹Œç‹‘çŽ€çŽĄçŽ­çŽŠçŽąçŽ çŽŹçŽç“ç“šç”żç•€ç”Ÿç–Œç–˜çšŻç›łç›±ç›°ç›”çŸžçŸŒçŸč矻çŸș"], -["cda1","çŸ·ç„‚ç€żç§…ç©žç©»ç«»ç±”çłœè€”è‚è‚źè‚Łè‚žè‚”è‚­èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠ”èŠ§èŠźèŠŒèŠžèŠșèŠŽèŠšèŠĄèŠ©è‹‚èŠ€è‹ƒèŠ¶èŠąè™°è™Żè™­è™źè±–èż’èż‹èż“èżèż–èż•èż—é‚Č邮邯邳邰é˜č阜阌é˜ș陃俍俅俓äŸČäż‰äż‹äżäż”äżœäż™äŸ»äŸłäż›äż‡äż–äŸș俀äŸčäżŹć‰„ć‰‰ć‹€ć‹‚ćŒœćŒćŽ—ćŽ–ćŽ™ćŽ˜ć’șć’Ąć’­ć’„ć“"], -["ce40","ć“ƒèŒć’·ć’źć“–ć’¶ć“…ć“†ć’ ć‘°ć’Œć’ąć’Ÿć‘Čć“žć’°ćž”ćžžćžŸćž€ćžŒćž—ćžćž›ćž”ćž˜ćžćž™ćž„ćžšćž•ćŁŽć€ć„“ć§Ąć§žć§źćš€ć§±ć§ć§șć§œć§Œć§¶ć§€ć§Čć§·ć§›ć§©ć§łć§”ć§ ć§Ÿć§Žć§­ćźšć±Œćłćł˜ćłŒćł—ćł‹ćł›"], -["cea1","泞泚泉泇泊泖泓泔泏泈泆泎泟泾ć·č枥枹枣枠枀ćș°ćș€ćșąćș›ćșŁćș„ćŒ‡ćŒźćœ–ćŸ†æ€·æ€č恔æČæžæ…æ“æ‡æ‰æ›æŒæ€æ‚æŸæ€€æ„æ˜æŠæźæ‰‚æ‰ƒæ‹æŒæŒ‹æ‹”æŒŽæŒƒæ‹«æ‹č挏挌拞拶挀挓挔æ‹ș挕拻拰敁敃æ–Șæ–żæ˜¶æ˜Ąæ˜Čæ˜”æ˜œæ˜Šæ˜ąæ˜łæ˜«æ˜ș昝明æ˜čæ˜źæœæœæŸæŸČ柈æžș"], -["cf40","æŸœæž»æŸžæŸ˜æŸ€æž·æŸ…æŸ«æŸ€æŸŸæž”æŸæžłæŸ·æŸ¶æŸźæŸŁæŸ‚æžč柎柧柰æžČæŸŒæŸ†æŸ­æŸŒæžźæŸŠæŸ›æŸș柉柊柃æŸȘæŸ‹æŹšæź‚æź„æź¶æŻ–æŻ˜æŻ æ° æ°ĄæŽšæŽŽæŽ­æŽŸæŽŒæŽżæŽ’æŽŠæłšæŽłæŽ„æŽ™æŽș掚掑掀掝攂"], -["cfa1","æŽæŽ˜æŽ·æŽƒæŽæ”€æŽ‡æŽ æŽŹæŽˆæŽąæŽ‰æŽç‚·ç‚Ÿç‚Ÿç‚±ç‚°ç‚Ąç‚Žç‚”ç‚©ç‰ç‰‰ç‰Šç‰Źç‰°ç‰łç‰źç‹Šç‹€ç‹šç‹«ç‹Ÿç‹Ș狩狣玅珌珂珈珅çŽčçŽ¶çŽ”çŽŽç«çŽżç‡çŽŸçƒç†çŽžç‹ç“Źç“źç”źç•‡ç•ˆç–§ç–Șç™č盄眈眃眄眅眊盷盻ç›ș矧矚砆砑砒砅砐砏砎砉砃砓焊焌焋焅焄秕种秏秖秎çȘ€"], -["d040","ç©Ÿç«‘çŹ€çŹç±ș籞ç±č籿çȀçČçŽƒçŽˆçŽçœ˜çŸ‘çŸçŸŸè€‡è€Žè€è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒèƒ…èƒŁèƒ™èƒœèƒŠèƒ•èƒ‰èƒèƒ—èƒŠèƒè‡żèˆĄèŠ”è‹™è‹Ÿè‹č茇苚茀苕èŒșè‹«è‹–è‹Žè‹Źè‹Ąè‹Č苔茌苻苶苰è‹Ș"], -["d0a1","苀苠è‹șè‹łè‹­è™·è™Žè™Œè™łèĄèĄŽèĄ§èĄȘèĄ©è§“èš„èš‡è”ČèżŁèżĄèżźèż éƒ±é‚œé‚żéƒ•éƒ…é‚Ÿéƒ‡éƒ‹éƒˆé‡”é‡“é™”é™é™‘é™“é™Šé™Žć€žć€…ć€‡ć€“ć€ąć€°ć€›äż”äżŽć€łć€·ć€Źäż¶äż·ć€—ć€œć€ ć€§ć€”ć€Żć€±ć€Žć…šć†”ć†“ć‡Šć‡„ć‡…ć‡ˆć‡Žć‰Ąć‰šć‰’ć‰žć‰Ÿć‰•ć‰ąć‹ćŒŽćŽžć”Šć“ąć”—ć”’ć“§ć“łć“€ć”šć“żć”„ć”ˆć“«ć”‘ć”…ć“±"], -["d140","ć”Šć“»ć“·ć“žć“ ć”Žć”ƒć”‹ćœćœ‚ćŸŒć Č柕柒ćžșćŸ†ćžœćžŒćžžćž¶ćžżćŸ‡ćŸćžčćŸć€Žć„Šćš™ćš–ćš­ćšźćš•ćšćš—ćšŠćšžćšłć­Źćź§ćź­ćźŹć°ƒć±–ć±”ćłŹćłżćłźćł±ćł·ćŽ€ćłč枩枚ćșšćșźćșȘćșŹćŒłćŒ°ćœ§ææšæ§"], -["d1a1","ææ‚ąæ‚ˆæ‚€æ‚’æ‚æ‚æ‚ƒæ‚•æ‚›æ‚—æ‚‡æ‚œæ‚Žæˆ™æ‰†æ‹ČæŒæ–æŒŹæ„æ…æŒ¶æƒæ€æŒčæ‹æŠæŒŒæŒ©ææŒŽæ˜æ”æ™æŒ­æ‡æŒłæšæ‘æŒžæ—æ€æˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæĄ‰æ Čæ łæ »æĄ‹æĄæ –æ ±æ œæ ”æ «æ ­æ ŻæĄŽæĄ„æ Žæ æ ’æ ”æ Šæ šæ źæĄæ șæ „æ  æŹŹæŹŻæŹ­æŹ±æŹŽæ­­è‚‚æźˆæŻŠæŻ€"], -["d240","æŻšæŻŁæŻąæŻ§æ°„æ”șæ”Łæ”€æ”¶æŽæ”Ąæ¶’æ”˜æ”ąæ”­æ”Żæ¶‘æ¶æ·Żæ”żæ¶†æ”žæ”§æ” æ¶—æ”°æ”Œæ”Ÿæ¶‚æ¶˜æŽŻæ”šæ¶‹æ”Ÿæ¶€æ¶„æŽ–æ¶ƒæ”»æ”œæ””æ¶çƒœçƒ“çƒ‘çƒçƒ‹çŒč烱烗烒烞烠烔烍烅烆烇烚烎烡牂牾"], -["d2a1","牷牶猀ç‹șç‹Žç‹Ÿç‹¶ç‹łç‹»çŒç“ç™ç„ç–çŽŒç§çŁç©çœç’ç›ç”ççšç—ç˜çšç“žç“Ÿç“Žç“”ç”Ąç•›ç•Ÿç–°ç—ç–»ç—„ç—€ç–żç–¶ç–șçšŠç›‰çœçœ›çœçœ“çœ’çœŁçœ‘çœ•çœ™çœšçœąçœ§ç Łç Źç ąç ”ç Żç šç źç «ç Ąç ©ç łç Șç ±ç„”ç„›ç„ç„œç„“ç„’ç„‘ç§«ç§Źç§ ç§źç§­ç§Ș秜秞秝çȘ†çȘ‰çȘ…çȘ‹çȘŒçȘŠçȘ‡ç«˜çʐ"], -["d340","笄笓笅笏笈笊笎笉笒çȄçȑçȊçȌçȈçȍçČ…çŽžçŽçŽ‘çŽŽçŽ˜çŽ–çŽ“çŽŸçŽ’çŽçŽŒçœœçœĄçœžçœ çœçœ›çŸ–çŸ’çżƒçż‚çż€è€–è€Ÿè€čèƒșèƒČèƒčèƒ”è„èƒ»è„€èˆèˆŻèˆ„èŒłèŒ­è„èŒ™è‘èŒ„è–èŒżèèŒŠèŒœèŒą"], -["d3a1","荂荎茛èŒȘèŒˆèŒŒèèŒ–èŒ€èŒ èŒ·èŒŻèŒ©è‡è…èŒè“èŒžèŒŹè‹èŒ§èˆè™“è™’èšąèššèš–èšèš‘èšžèš‡èš—èš†èš‹èššèš…èš„èš™èšĄèš§èš•èš˜èšŽèšèšèš”èĄƒèĄ„èĄ­èĄ”èĄ¶èĄČèą€èĄ±èĄżèĄŻèąƒèĄŸèĄŽèĄŒèš’è±‡è±—è±»èČ€èČŁè”¶è”žè¶”è¶·è¶¶è»‘è»“èżŸèż”é€‚èżżèż»é€„èżŒèż¶éƒ–éƒ éƒ™éƒšéƒŁéƒŸéƒ„éƒ˜éƒ›éƒ—éƒœéƒ€é…"], -["d440","é…Žé…é‡•é‡ąé‡šé™œé™ŸéšŒéŁŁé«ŸéŹŻäčżć°ćȘ恡恞恠恓恋恝ćČćˆććć›ćŠćąć€•ć…ćŸć©ć«ćŁć€ć†ć€ćźćłć—ć‘ć‡ć‰«ć‰­ć‰Źć‰źć‹–ć‹“ćŒ­ćŽœć•”ć•¶ć”Œć•ć•ć”Žć”Ș救敹收攔攰敒故"], -["d4a1","攌ć”Č敄敎ć”čć•ˆć”­ć”»ć•€ć•‹ćœŠćœ‡ćŸ»ć ”ćŸąćŸ¶ćŸœćŸŽć €ćŸ­ćŸœć ˆćŸžć ‹ćŸłćŸć ‡ćŸźćŸŁćŸČćŸ„ćŸŹćŸĄć ŽćŸŒć ćŸ§ć ć ŒćŸ±ćŸ©ćŸ°ć ć „ć„œć© ć©˜ć©•ć©§ć©žćšžćš”ć©­ć©ć©Ÿć©„ć©Źć©“ć©€ć©—ć©ƒć©ć©’ć©„ć©›ć©ˆćȘŽćšŸć©ćščć©Œć©°ć©©ć©‡ć©‘ć©–ć©‚ć©œć­Čć­źćŻćŻ€ć±™ćŽžćŽ‹ćŽćŽšćŽ ćŽŒćŽšćŽćŽŠćŽ„ćŽ"], -["d540","ćŽ°ćŽ’ćŽŁćŽŸćŽźćžŸćžŽćș±ćșŽćșčćșČćșłćŒ¶ćŒžćŸ›ćŸ–ćŸŸæ‚Šæ‚æ‚†æ‚Ÿæ‚°æ‚șæƒ“æƒ”æƒæƒ€æƒ™æƒæƒˆæ‚±æƒ›æ‚·æƒŠæ‚żæƒƒæƒæƒ€æŒČæ„æŽŠæŽ‚æœæŽœæŽžæŽ­æŽæŽ—æŽ«æŽŽæŻæŽ‡æŽæźæŽŻæ”æŽœæ­æŽźæŒæŽ€æŒ»æŽŸ"], -["d5a1","æžæŽ…æŽæŽ‘æŽæ°æ•“æ—æ™„æ™Ąæ™›æ™™æ™œæ™ąæœ˜æĄčæą‡æąæąœæĄ­æĄźæąźæą«æ„–æĄŻæąŁæąŹæą©æĄ”æĄŽæąČæąæĄ·æą’æĄŒæĄ«æĄČæąȘæą€æĄ±æĄŸæą›æą–æą‹æą æą‰æą€æĄžæĄ»æą‘æąŒæąŠæĄœæŹ¶æŹłæŹ·æŹžæź‘æźæźæźŽæźŒæ°Șæ·€æ¶«æ¶Žæ¶łæčŽæ¶Źæ·©æ·ąæ¶·æ·¶æ·”枀淈淠淟淖涟淄淜淝淛淎淊涜淭淰æ¶ș淕淂淏淉"], -["d640","淐æ·Čæ·“æ·œæ·—æ·æ·Łæ¶»çƒșç„çƒ·ç„—çƒŽç„Œçƒ°ç„„çƒłç„çƒŒçƒżç„†ç„“ç„€çƒžçƒ¶ç„‹ç„‚ç„Žç‰Ÿç‰»ç‰Œç‰żçŒçŒ—çŒ‡çŒ‘çŒ˜çŒŠçŒˆç‹żçŒçŒžçŽˆç¶çžç”ç„ççœç‡ç€çșçŒçżçŒç‹çŽçˆç•€ç•Łç—Žç—’ç—"], -["d6a1","痋痌痑痐皏皉盓çœčçœŻçœ­çœ±çœČçœŽçœłçœœçœ„çœ»çœ”çĄˆçĄ’çĄ‰çĄçĄŠçĄŒç ŠçĄ…çĄç„€ç„§ç„©ç„Ș焣焫焥犻ç§șç§žç§¶ç§·çȘçȘ”çȘçŹ”ç­‡çŹŽçŹ„çŹ°çŹąçŹ€çŹłçŹ˜çŹȘçŹçŹ±çŹ«çŹ­çŹŻçŹČ笾笚笣çȔçȘçȖçČŁçŽ”çŽœçŽžçŽ¶çŽșç”…çŽŹçŽ©ç”ç”‡çŽŸçŽżç”ŠçŽ»çŽšçœŁçŸ•çŸœçŸçŸ›çżŠçż‹çżçżçż‘çż‡çżçż‰è€Ÿ"], -["d740","è€žè€›è‡èƒèˆè„˜è„„è„™è„›è„­è„Ÿè„Źè„žè„Ąè„•è„§è„è„ąèˆ‘èˆžèˆłèˆș舎èˆČè‰ŽèŽèŽŁèŽšèŽèșèłèŽ€èŽèŽèŽèŽ•èŽ™è”èŽ”èŽ©èœèŽƒèŽŒèŽèŽ›èŽȘèŽ‹èŸèŽ„èŽŻèŽˆèŽ—èŽ°èżèŽŠèŽ‡èŽźè¶èŽšè™™è™–èšżèš·"], -["d7a1","蛂蛁蛅èšș蚰蛈èščèšłèšžè›ŒèšŽèš»èšŒè›ƒèšœèšŸèĄ’èą‰èą•èąšèąąèąȘèąšèą‘èąĄèąŸèą˜èą§èą™èą›èą—èą€èąŹèąŒèą“èąŽèŠ‚è§–è§™è§•èš°èš§èšŹèšžè°č谻豜豝豜èČ„è”œè”»è”č趌跂è¶čè¶żè·è»˜è»žè»è»œè»—è» è»Ąé€€é€‹é€‘é€œé€Œé€ĄéƒŻéƒȘ郰郎éƒČéƒłéƒ”éƒ«éƒŹéƒ©é…–é…˜é…šé…“é…•é‡Źé‡Žé‡±é‡łé‡žé‡€é‡čé‡Ș"], -["d840","釫釷釚釟é•șé–†é–ˆé™Œé™­é™«é™±é™ŻéšżéȘé „éŁ„éŠ—ć‚›ć‚•ć‚”ć‚žć‚‹ć‚Łć‚ƒć‚Œć‚Žć‚ćšć‚œć‚’ć‚‚ć‚‡ć…Ÿć‡”ćŒ’ćŒ‘ćŽ€ćŽ§ć–‘ć–šć–„ć–­ć•·ć™…ć–ąć–“ć–ˆć–ć–”ć–ć–Łć–’ć–€ć•œć–Œć–Šć•żć–•ć–Ąć–ŽćœŒć ©ć ·"], -["d8a1","ć ™ć žć §ć Łć šćŸ”ćĄˆć „ć œć ›ć łć żć ¶ć źć č栞栭栏栻愥ćȘŻćȘ”ćȘŸć©șćȘąćȘžć©žćȘŠć©ŒćȘ„ćȘŹćȘ•ćȘźćš·ćȘ„ćȘŠćȘ—ćȘƒćȘ‹ćȘ©ć©»ć©œćȘŒćȘœćȘćȘ“ćȘćŻȘćŻćŻ‹ćŻ”ćŻ‘ćŻŠćŻŽć°Œć°°ćŽ·ć”ƒć”«ć”ć”‹ćŽżćŽ”ć”‘ć”Žć”•ćŽłćŽșć”’ćŽœćŽ±ć”™ć”‚ćŽčć”‰ćŽžćŽŒćŽČ掶攀攅ćč„ćčćœ˜ćŸŠćŸ„ćŸ«æƒ‰æ‚čæƒŒæƒąæƒŽæƒ„æ„”"], -["d940","æƒČæ„Šæ„–æ„…æƒ”æ„“æƒžæƒŒæƒŸæƒæ„ƒæ„˜æ„æ„æƒżæ„„æ„‹æ‰ŠæŽ”æŽ±æŽ°æŽæ„æšæŻæƒæ’æłæŠæ æ¶æ•æČæ”æ‘ĄæŸæŽŸææœæ„æ˜æ“æ‚æ‡æŒæ‹æˆæ°æ—æ™æ”Č敧æ•Șæ•€æ•œæ•šæ•„æ–Œæ–æ–žæ–źæ—æ—’"], -["d9a1","æ™Œæ™Źæ™»æš€æ™±æ™čæ™Șæ™Čæœæ€ŒæŁ“æ€„æŁœæ€ȘæŁŹæŁȘæŁ±æ€æŁ–æŁ·æŁ«æŁ€æŁ¶æ€“æ€æŁłæŁĄæ€‡æŁŒæ€ˆæ„°æąŽæ€‘æŁŻæŁ†æ€”æŁžæŁæŁœæŁŒæŁšæ€‹æ€Šæ€—æŁŽæŁˆæŁæŁžæŁŠæŁŽæŁ‘æ€†æŁ”æŁ©æ€•æ€„æŁ‡æŹčæŹ»æŹżæŹŒæź”æź—æź™æź•æźœæŻ°æŻČæŻłæ°°æ·Œæč†æč‡æžŸæč‰æșˆæžŒæžœæč…æčąæž«æžżæčæčæčłæžœæžłæč‹æč€æč‘æž»æžƒæžźæčž"], -["da40","æčšæčœæčĄæž±æžšæč æč±æč«æžčæžąæž°æč“æč„æž§æčžæč€æč·æč•æččæč’æčŠæž”æž¶æčšç„ ç„žç„Żçƒ»ç„źç„±ç„Łç„„焱ç„Č焟焹ç„șç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒąçŒ±çŒłçŒ§çŒČçŒ­çŒŠçŒŁçŒ”çŒŒçźçŹç°ç«ç–"], -["daa1","çšçĄç­ç±ç€çŁçç©ç çČç“»ç”Żç•Żç•Źç—§ç—šç—Ąç—Šç—ç—Ÿç—€ç——çš•çš’ç›šç†ç‡ç„çç…çŠçŽç‹çŒçŸžçŸŹçĄ çĄ€çĄ„çĄœçĄ­çĄ±çĄȘ祟祰祩祚神祹焎焳ç„Č焰皂皊皃皌的çȘ™ç«Šç«€ç­ŠçŹ»ç­„ç­ˆç­Œç­Žç­€ç­˜ç­…çČąçȞçČšçČĄç”˜ç”Żç”Łç”“ç”–ç”§ç”Șç”ç”­ç”œç”«ç”’ç””ç”©ç”‘ç”Ÿç”ŽçŒŸçŒżçœ„"], -["db40","çœŠçŸąçŸ çŸĄçż—è‘èèèƒŸèƒ”è…ƒè…Šè…’è…è…‡è„œè…è„șè‡Šè‡źè‡·è‡žè‡čèˆ„èˆŒèˆœèˆżè‰”èŒ»èèčèŁè€èšè’è§è€èŒè¶èè†èˆè«èŁèŽżèèè„è˜èżèĄè‹èŽè–è”è‰è‰èèžè‘è†è‚èł"], -["dba1","菕èș菇菑èȘè“èƒèŹèźè„è»è—èąè›è›èŸè›˜è›ąè›Šè›“è›Łè›šè›Șè›è›«è›œè›Źè›©è›—è›šè›‘èĄˆèĄ–èĄ•èąșèŁ—èąčèąžèŁ€èąŸèą¶èąŒèą·èąœèąČè€èŁ‰èŠ•èŠ˜èŠ—è§è§šè§›è©Žè©èšč詙詀詗詘詄詅詒詈詑詊詌詏豟èȁèȀèČșèČŸèȰèČčèČ”è¶„è¶€è¶‰è·˜è·“è·è·‡è·–è·œè·è·•è·™è·ˆè·—è·…è»Żè»·è»ș"], -["dc40","è»čè»Šè»źè»„è»”è»§è»šè»¶è»«è»±è»Źè»Žè»©é€­é€Žé€Żé„†é„Źé„„éƒżéƒŒé„ˆéƒčéƒ»é„é„€é„‡é„…é„ƒé…Ąé…€é…Ÿé…ąé… éˆéˆŠéˆ„éˆƒéˆšéˆŠéˆéˆŒéˆ€éˆ’é‡żé‡œéˆ†éˆ„éˆ§éˆ‚éˆœéˆ€éˆ™éˆ—éˆ…éˆ–é•»é–é–Œé–éš‡é™Ÿéšˆ"], -["dca1","éš‰éšƒéš€é›‚é›ˆé›ƒé›±é›°éŹé°éźé ‡éą©éŁ«éłŠé»čäșƒäș„äș¶ć‚œć‚żćƒ†ć‚źćƒ„ćƒŠć‚Žćƒˆćƒ‚ć‚°ćƒć‚șć‚±ćƒ‹ćƒ‰ć‚¶ć‚žć‡—ć‰șć‰žć‰»ć‰Œć—ƒć—›ć—Œć—ć—‹ć—Šć—ć—€ć—”ć—„ć—©ć–żć—’ć–ć—ć—•ć—ąć—–ć—ˆć—Čć—ć—™ć—‚ćœ”ćĄ“ćĄšćĄ€ćĄćĄćĄ‰ćĄŻćĄ•ćĄŽćĄćĄ™ćĄ„ćĄ›ć œćĄŁćĄ±ćŁŒć«‡ć«„ć«‹ćȘșćȘžćȘ±ćȘ”ćȘ°ćȘżć«ˆćȘ»ć«†"], -["dd40","ćȘ·ć«€ć«ŠćȘŽćȘ¶ć«ćȘčćȘćŻ–ćŻ˜ćŻ™ć°Ÿć°łć”±ć”Łć”Šć”„ć”Č攏攞攚攧改淰ćčćčŽćčŠćčćč‹ć»…ć»Œć»†ć»‹ć»‡ćœ€ćŸŻćŸ­æƒ·æ…‰æ…Šæ„«æ……æ„¶æ„Čæ„źæ…†æ„Żæ…æ„©æ…€æˆ é…šæˆŁæˆ„æˆ€æ…æ±æ«ææ’æ‰æ æ€"], -["dda1","æłæ‘ƒæŸæ•æ˜æčæ·æąæŁæŒæŠæ°æšæ‘æ”æŻæŠæšæ‘€æ„æ§æ‹æ§æ›æźæĄæŽæ•Żæ–’æ—“æš†æšŒæš•æšæš‹æšŠæš™æš”æ™žæœ æ„Šæ„Ÿæ€žæ„Žæ„ąæ„±æ€żæ„…æ„Șæ€čæ„‚æ„—æ„™æ„șæ„ˆæ„‰æ€”æ„Źæ€łæ€œæ„„æŁ°æ„žæ€Žæ„©æ„€æ„Żæ„„æ„¶æ„˜æ„æ„Žæ„Œæ€»æ„‹æ€·æ„œæ„æ„‘æ€Čæ„’æ€Żæ„»æ€Œæ­†æ­…æ­ƒæ­‚æ­ˆæ­æź›ïšæŻ»æŻŒ"], -["de40","æŻčæŻ·æŻžæș›æ»–滈æșæ»€æșŸæș“æș”æș æș±æșčæ»†æ»’æșœæ»æșžæ»‰æș·æș°æ»æșŠæ»æșČæșŸæ»ƒæ»œæ»˜æș™æș’æșŽæșæș€æșĄæșżæșłæ»æ»Šæș—æșźæșŁç…‡ç…”ç…’ç…Łç… ç…ç…ç…ąç…Č煾ç…Ș煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猌獂猻çŒșç€çŠç‰ç‘„ç‘Šç‘‹ç‘’ç‘‘ç‘—ç‘€ç‘ç‘ç‘Žç‘‚ç‘†ç‘ç‘”ç“Ąç“żç“Ÿç“œç”ç•čç•·æŠƒç—Żç˜ç˜ƒç—·ç—Ÿç—Œç—čç—žç˜ç—»ç—¶ç—­ç—”ç—œçš™çš”ç›ç•çŸç ç’ç–çšç©ç§ç”ç™ç­çŸ çą‡çąšçą”çąçą„çą•çą…çą†çąĄçąƒçĄčçą™çą€çą–çĄ»ç„ŒçŠ‚ç„œç„č繑繘繙繒繗繕繱繓"], -["df40","繛繐çȘŁçȘąçȘžç««ç­Šç­€ç­­ç­Žç­©ç­Č筄筳筱筰筥筞筶筣çČČçČŽçČŻç¶ˆç¶†ç¶€ç¶ç”żç¶…ç”șç¶Žç”»ç¶ƒç”Œç¶Œç¶”ç¶„ç”œç¶’çœ­çœ«çœ§çœšçœŹçŸŠçŸ„çŸ§çż›çżœè€Ąè…€è… è…·è…œè…©è…›è…ąè…ČæœĄè…žè…¶è…§è…Ż"], -["dfa1","è…„è…Ąèˆè‰‰è‰„è‰€è‰‚è‰…è“±èżè‘–è‘¶è‘čè’è’è‘„è‘‘è‘€è’†è‘§è°è‘è‘œè‘šè‘™è‘Žè‘łè‘è”‡è‘žè·èș萎è‘ș葃葞èČè‘…è©è™è‘‹èŻè‘‚è­è‘Ÿè‘°èčè‘Žè‘Œè‘’è‘Żè“…è’Žè»è‘‡è¶èłè‘šè‘Ÿè‘„è«è‘ è‘”è‘źè‘èœ‹èœ„è›·èœŒè›șè›–è›”èè›žèœŽèœ‰èœè›¶èœèœ…èŁ–èŁ‹èŁèŁŽèŁžèŁ›èŁšèŁŒèŁèŠ…èŠ›è§Ÿè§„è§€"], -["e040","è§Ąè§ è§ąè§œè§Šè©¶èȘ†è©żè©Ąèšżè©·èȘ‚èȘ„è©”èȘƒèȘè©Žè©ș谌豋豊豄豀豊èȆèȄèČ…èłŒè”šè”©è¶‘è¶Œè¶Žè¶è¶è¶“è¶”è¶è¶’è·°è· è·Źè·±è·źè·è·©è·Łè·ąè·§è·Čè·«è·ŽèŒ†è»żèŒèŒ€èŒ…èŒ‡èŒˆèŒ‚èŒ‹é’é€ż"], -["e0a1","é„é‰é€œé„é„é„é„‘é„–é„”é„‹é„Žé…źé…Żé‰ˆé‰’éˆ°éˆșé‰Šéˆłé‰„é‰žéŠƒéˆźé‰Šé‰†é‰­é‰Źé‰é‰ é‰§é‰Żéˆ¶é‰Ąé‰°éˆ±é‰”é‰Łé‰é‰Č鉎鉓鉌鉖éˆČ閟閜閞閛隒隓隑隗雎é›șé›œé›žé›”éłé·éžéČé é é ŽéąŹéŁ¶éŁč銯éŠČ銰銔éȘ­éȘ«é­›éłȘéł­éł§éș€é»œćƒŠćƒ”ćƒ—ćƒšćƒłćƒ›ćƒȘćƒćƒ€ćƒ“ćƒŹćƒ°ćƒŻćƒŁćƒ "], -["e140","ć‡˜ćŠ€ćŠć‹©ć‹«ćŒ°ćŽŹć˜§ć˜•ć˜Œć˜’ć—Œć˜ć˜œć˜ć˜“ć˜‚ć—ș昝昄旿ć—čćą‰ćĄŒćąćą˜ćą†ćąćĄżćĄŽćą‹ćĄșćą‡ćą‘ćąŽćĄ¶ćą‚ćąˆćĄ»ćą”ćąćŁŸć„«ć«œć«źć«„ć«•ć«Șć«šć«­ć««ć«łć«ąć« ć«›ć«Źć«žć«ć«™ć«šć«Ÿć­·ćŻ "], -["e1a1","ćŻŁć±Łć¶‚ć¶€ć”œć¶†ć”șć¶ć”·ć¶Šć¶‰ć¶ˆć”Ÿć”Œć¶ć”č政ćč˜ćč™ćč“ć»˜ć»‘ć»—ć»Žć»œć»•ć»™ć»’ć»”ćœ„ćœƒćœŻćŸ¶æ„Źæ„šæ…æ…žæ…±æ…łæ…’æ…“æ…Čæ…Źæ†€æ…Žæ…”æ…ș慛慄愻æ…Șæ…Ąæ…–æˆ©æˆ§æˆ«æ«æ‘æ‘›æ‘æ‘Žæ‘¶æ‘Čæ‘łæ‘œæ‘”æ‘Šæ’Šæ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘æ‘żæżæ‘Źæ‘«æ‘™æ‘„æ‘·æ•łæ– æšĄæš æšŸæœ…æœ„æœąæŠ±æŠ¶æ§‰"], -["e240","æŠ æ§ŽæŠ–æŠ°æŠŹæŠŒæŠ‘æŠ™æŠŽæŠ§æŠæŠ©æŠŸæŠŻæŠżæ§„æŠœæŠ€æ§”æŠčæ§ŠæŠšæ§æŠłæŠ“æŠȘæŠĄæŠžæ§™æŠ—æŠæ§‚æŠ”æŠ„æ§†æ­Šæ­æ­‹æźžæźŸæź æŻƒæŻ„æŻŸæ»Žæ»”æ»±æŒƒæŒ„æ»žæŒ·æ»»æŒźæŒ‰æœŽæŒ™æŒšæŒ§æŒ˜æŒ»æŒ’æ»­æŒŠ"], -["e2a1","æŒ¶æœłæ»čæ»źæŒ­æœ€æŒ°æŒŒæŒ”æ»«æŒ‡æŒŽæœƒæŒ…æ»œæ»¶æŒč挜滌æŒșæŒŸæŒæŒžæŒˆæŒĄç†‡ç†ç†‰ç†€ç†…ç†‚ç†ç…»ç††ç†ç†—ç‰„ç‰“çŠ—çŠ•çŠ“çƒçç‘çŒç‘ąç‘łç‘±ç‘”ç‘Čç‘§ç‘źç”€ç”‚ç”ƒç•œç–ç˜–ç˜ˆç˜Œç˜•ç˜‘ç˜Šç˜”çšžçžçŒçž…çž‚çźçž€çŻçŸçžƒçąČçąȘçąŽçą­çąšçĄŸçą«çąžçą„çą çąŹçąąçą€çŠ˜çŠŠçŠ‹çŠ–çŠ•çŠ”çŠ“"], -["e340","çŠ—çŠˆçŠ’çŠçš«ç©Šçš°çšŻçššçšŠçȘšçȘ«çȘŹç«źçźˆçźœçźŠçź‘çźçź–çźçźŒçź›çźŽçź…çź˜ćŠ„çź™çź€çź‚çČ»çČżçČŒçČșç¶§ç¶·ç·‚ç¶Łç¶Șç·ç·€ç·…ç¶ç·Žç·„ç·†ç·‹ç·Œç¶Żç¶čç¶–ç¶Œç¶Ÿç¶Šç¶źç¶©ç¶Ąç·‰çœłçżąçżŁçż„çżž"], -["e3a1","è€€èèœè†‰è††è†ƒè†‡è†è†Œè†‹èˆ•è’—è’€è’Ąè’Ÿè’șè“Žè“‚è’Źè’źè’«è’č蒎蓁蓍è’Șè’šè’±è“è’è’§è’»è’ąè’”è“‡è“Œè’›è’©è’Żè’šè“–è’˜è’¶è“è’ è“—è“”è“’è“›è’°è’‘è™ĄèœłèœŁèœšè«è€èœźèœžèœĄèœ™èœ›èƒèœŹèèœŸè†èœ èœČèœȘ蜭蜌蜒èœșèœ±èœ”è‚èœŠèœ§èœžèœ€èœšèœ°èœ‘èŁ·èŁ§èŁ±èŁČèŁșèŁŸèŁźèŁŒèŁ¶èŁ»"], -["e440","èŁ°èŁŹèŁ«èŠèŠĄèŠŸèŠžè§©è§«è§šèȘ«èȘ™èȘ‹èȘ’èȘèȘ–è°œè±šè±©èł•èłèł—è¶–èž‰èž‚è·żèžè·œèžŠèžƒèž‡èž†èž…è·Ÿèž€èž„èŒèŒ‘èŒŽèŒé„Łé„œé„ é„ąé„Ÿé„é„šé„€é„Ąé„›é…șé…Čé…č酳銄銀鉶銛é‰ș銠銔éŠȘ銍"], -["e4a1","銊銚銫é‰čéŠ—é‰żéŠŁé‹źéŠŽéŠ‚éŠ•éŠąé‰œéŠˆéŠĄéŠŠéŠ†éŠŒéŠ™éŠ§é‰ŸéŠ‡éŠ©éŠéŠ‹éˆ­éšžéšĄé›żé˜éœéșéŸéžƒéž€éž‚é»éž„éžéżéŸŽéŸé –éą­éąźé€‚é€€é€‡éŠéŠœé§ƒéŠč銻éŠș駂銜駇éȘ±é«Łé«§éŹŸéŹżé­ é­Ąé­Ÿéł±éłČéł”éș§ćƒżć„ƒć„°ćƒžć„†ć„‡ćƒ¶ćƒŸć„‹ć„Œćƒœć„ŠćŠ‹ćŠŒć‹±ć‹Żć™ˆć™‚ć™Œć˜”晁晊晉晆晘"], -["e540","ć™šć™€ć˜łć˜œć˜Źć˜Ÿć˜žć˜Șć˜șćœšćą«ćąćą±ćą ćąŁćąŻćąŹćą„ćąĄćŁżć«żć«Žć«œć«·ć«¶ćŹƒć«žćŹ‚ć«čćŹćŹ‡ćŹ…ćŹć±§ć¶™ć¶—ć¶Ÿć¶’ć¶ąć¶“ć¶•ć¶ ć¶œć¶Ąć¶šć¶žćč©ćčćč ćčœç·łć»›ć»žć»Ąćœ‰ćŸČ憋憃æ…迆±æ†°æ†ąæ†‰"], -["e5a1","æ†›æ†“æ†Żæ†­æ†Ÿæ†’æ†Șæ†Ąæ†æ…Šæ†łæˆ­æ‘źæ‘°æ’–æ’ æ’…æ’—æ’œæ’æ’‹æ’Šæ’Œæ’Łæ’Ÿæ‘šæ’±æ’˜æ•¶æ•șæ•č敻æ–Čæ–łæš”æš°æš©æšČ暷æšȘæšŻæš€æš†æš—æ§„æ§žæš•æ§±æ§€æš æ§żæ§Źæ§ąæš›æšæ§Ÿæš§æ§Čæ§źæš”æ§·æ§§æ©€æšˆæ§Šæ§»æšæ§Œæ§«æš‰æš„æš˜æš„æšæ§¶æšŠæš‡æ§Žæš–æ­‘æź„æźŁæźąæźŠæ°æ°€æŻżæ°‚æœæŒŠæœŸæŸ‡æż†æŸ’"], -["e640","æŸæŸ‰æŸŒæœąæœæŸ…æœšæŸ–æœ¶æœŹæŸ‚æœ•æœČæœ’æœæœ—æŸ”æŸ“æœæŒ€æœĄæœ«æœœæœ§æŸæœ“æŸ‹æœ©æœżæŸ•æœŁæœ·æœȘ朻ç†Čç†Żç†›ç†°ç† ç†šç†©ç†”ç†ç†„ç†žç†€ç†Ąç†Ș熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","çąç’‡ç’‰ç’Šç’†ç’ç‘œç’…ç’ˆç‘Œç‘čç”ˆç”‡ç•Ÿç˜„ç˜žç˜™ç˜ç˜œç˜Łç˜šç˜šç˜›çšœçšçšžçš›çžçžçž‰çžˆçŁçą»çŁçŁŒçŁ‘çŁŽçŁ”çŁˆçŁƒçŁ„çŁ‰çŠšçŠĄçŠ çŠœçŠąçŠ›æ­¶çščçȘČçȘŽçȘłçź·çŻ‹çźŸçźŹçŻŽçźŻçźčçŻŠçź”çł…çłˆçłŒçł‹ç··ç·›ç·Șç·§ç·—ç·Ąçžƒç·șç·Šç·¶ç·±ç·°ç·źç·Ÿçœ¶çŸŹçŸ°çŸ­çż­çż«çżȘçżŹçżŠçżšè€è§è†Łè†Ÿ"], -["e740","è†žè†•è†ąè†™è†—èˆ–è‰è‰“è‰’è‰è‰Žè‰‘è”€è”»è”è”€è”©è”Žè”‰è”è”Ÿè”Šè”§è”œè“»è”«è“ș蔈蔌蓎è”Șè“Čè”•è“·è“«è“łè“Œè”’è“Șè“©è”–è“Ÿè”šè”è”źè”‚è“œè”žè“¶è”±è”Šè“§è“šè“°è“Żè“čè”˜è” è”°è”‹è”™è”Żè™ą"], -["e7a1","è–èŁè€è·èŸĄèłè˜è”è›è’èĄèšè‘èžè­èȘèèŽèŸèèŻèŹèșèźèœè„èè»è”èąè§è©èĄšè€…è€Œè€”è€‹è€—è€˜è€™è€†è€–è€‘è€Žè€‰èŠąèŠ€èŠŁè§­è§°è§Źè«è«†èȘžè«“諑諔諕èȘ»è«—èȘŸè«€è«…諘諃èȘșèȘœè«™è°Ÿè±èČèł„èłŸèł™èłšèłšèłèł§è¶ è¶œè¶Ąè¶›èž èžŁèž„èž€èžźèž•èž›èž–èž‘èž™èžŠèž§"], -["e840","èž”èž’èž˜èž“èžœèž—èžšèŒŹèŒ€èŒ˜èŒšèŒ èŒŁèŒ–èŒ—éłé°éŻé§é«é„Żé„«é„©é„Șé„Čé„Šé„źé†…é††é†Šé†é†‚é†„é†€é‹é‹ƒé‹„é‹€é‹™éŠ¶é‹é‹±é‹Ÿé‹˜é‹©é‹—é‹é‹Œé‹Żé‹‚é‹šé‹Šé‹ˆé‹Žé‹Šé‹é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“"], -["e8a1","éŠ”é‹Ąé‹†éŠŽé•Œé–Źé–«é–źé–°éš€éšąé›“éœ…éœˆéœ‚éšéžŠéžŽéžˆéŸéŸé žé é Šé ©é šé  é ›é §éąČ逈éŁș逑途逖逗逕駜駍駏駓駔駎駉駖駘駋駗駌éȘłé«Źé««é«łé«Čé«±é­†é­ƒé­§é­Žé­±é­Šé­¶é­”é­°é­šé­€é­ŹéłŒéłșéłœéłżéł·éŽ‡éŽ€éłčéł»éŽˆéŽ…éŽ„éșƒé»“éŒéŒć„œć„“ć„—ć„šć„‘ć‡žćŒŽćĄć™°ć™ ć™ź"], -["e940","晳晩晣晭ć™Čć™žć™·ćœœćœ›ćŁˆćąœćŁ‰ćążćąșćŁ‚ćąŒćŁ†ćŹ—ćŹ™ćŹ›ćŹĄćŹ”ćŹ“ćŹćŹ–ćŹšćŹšćŹ ćŹžćŻŻć¶Źć¶±ć¶©ć¶§ć¶”ć¶°ć¶źć¶Șć¶šć¶Čć¶­ć¶Żć¶Žćč§ćčšćčŠćčŻć»©ć»§ć»Šć»šć»„ćœ‹ćŸŒæ†æ†šæ†–æ‡…æ†Žæ‡†æ‡æ‡Œæ†ș"], -["e9a1","æ†żæ†žæ†Œæ“—æ“–æ“æ“æ“‰æ’œæ’‰æ“ƒæ“›æ“łæ“™æ”łæ•żæ•Œæ–ąæ›ˆæšŸæ›€æ›Šæ›‹æ›æšœæš»æšșæ›ŒæœŁæšŽæ©Šæ©‰æ©§æšČæ©šæšŸæ©æ©­æ©¶æ©›æ©‘æššæ©šæš»æšżæ©æ©Șæ©€æ©æ©æ©”æ©Żæ©©æ© æšŒæ©žæ©–æ©•æ©æ©Žæ©†æ­•æ­”æ­–æź§æźȘæź«æŻˆæŻ‡æ°„æ°ƒæ°†æŸ­æż‹æŸŁæż‡æŸŒæżŽæżˆæœžæż„æŸœæŸžæżŠæŸšç€„æŸ„æŸźæŸșæŸŹæŸȘæżæŸżæŸž"], -["ea40","æŸąæż‰æŸ«æżæŸŻæŸČæŸ°ç‡…ç‡‚ç†żç†žç‡–ç‡€ç‡ç‡‹ç‡”ç‡Šç‡‡ç‡ç†œç‡˜ç†Œç‡†ç‡šç‡›çŠçŠžç©çŠç§çŹç„ç«çȘç‘żç’šç’ ç’”ç’’ç’•ç’Ąç”‹ç–€ç˜Żç˜­ç˜±ç˜œç˜łç˜Œç˜”ç˜Čç˜°çš»ç›ŠçžšçžçžĄçžœçž›çžąçžŁçž•çž™"], -["eaa1","çž—çŁçŁ©çŁ„çŁȘçŁžçŁŁçŁ›çŁĄçŁąçŁ­çŁŸçŁ çŠ€ç©„ç©ˆç©‡çȘ¶çȘžçȘ”çȘ±çȘ·çŻžçŻŁçŻ§çŻçŻ•çŻ„çŻšçŻšçŻč篔çŻȘçŻąçŻœçŻ«çŻ˜çŻŸçł’çł”çł—çłçł‘çž’çžĄçž—çžŒçžŸçž çž“çžŽçžœçž•çžšçžąçž‹çžçž–çžçž”çž„çž€çœƒçœ»çœŒçœșçŸ±çżŻè€Șè€©èŹè†±è†Šè†źè†čè†”è†«è†°è†Źè†Žè†Č膷膧è‡Čè‰•è‰–è‰—è•–è•…è•«è•è•“è•Ąè•˜"], -["eb40","è•€è•†è•€è•è•ąè•„è•‘è•‡è•Łè”Ÿè•›è•±è•Žè•źè•”è••è•§è• è–Œè•Šè•è•”è•„è•Źè™Łè™„è™€èž›èžèž—èž“èž’èžˆèžèž–èž˜èčèž‡èžŁèž…èžèž‘èžèž„èž”èžœèžšèž‰è€žè€Šè€°è€­è€źè€§è€±è€ąè€©è€Łè€Żè€Źè€Ÿè§±è« "], -["eba1","è«ąè«Čè«Žè«”è«èŹ”è«€è«Ÿè«°è«ˆè«žè«Ąè«šè«żè«Żè«»èȑèȒèČèł”èłźèł±èł°èłłè”Źè”źè¶„è¶§èžłèžŸèžžèč€èč…螶螌螜èčèž°èžżèșœèŒ¶èŒźèŒ”èŒČèŒč茷茎遶éč遻邆éƒșé„łé„”é„¶é†“é†é†‘é†é†éŒ§éŒžéŒˆéŒŸéŒ†éŒéșéŒžéŒŒéŒ›éŒŁéŒ’éŒé†éŒ­éŒŽéŒé‹‹éŒé‹ș錄錓é‹čé‹·éŒŽéŒ‚éŒ€é‹żéŒ©éŒč錔éŒȘ錔錌"], -["ec40","錋鋟錉錀鋻錖閌闍閟é–čé–șé–¶é–żé–”é–œéš©é›”éœ‹éœ’éœéž™éž—éž”éŸ°éŸžé ”é Żé Čé€€é€Ÿé€§é€©éŠžé§źé§Źé§„é§€é§°é§Łé§Șé§©é§§éȘčéȘżéȘŽéȘ»é«¶é«șé«čé«·éŹłéź€éź…éź‡é­Œé­Ÿé­»éź‚éź“éź’éźé­ș鼕"], -["eca1","é­œéźˆéŽ„éŽ—éŽ éŽžéŽ”éŽ©éŽéŽ˜éŽąéŽéŽ™éŽŸéșˆéș†éș‡éșźéș­é»•é»–é»șéŒ’éŒœć„Šć„„ć„ąć„€ć„ ć„©ć‹Žćš“ćšŒćšćš†ćš„ćšƒć™Ÿćš‚ć™żćšćŁ–ćŁ”ćŁćŁ’ćŹ­ćŹ„ćŹČ揣描揧揊揯揟死毱ćŻČć¶·ćčŹćčȘćŸŸćŸ»æ‡ƒæ†”æ†Œæ‡§æ‡ æ‡„æ‡€æ‡šæ‡žæ“Żæ“©æ“Łæ“«æ“€æ“šæ–æ–€æ–¶æ—šæ›’æȘæȘ–æȘæȘ„æȘ‰æȘŸæȘ›æȘĄæȘžæȘ‡æȘ“æȘŽ"], -["ed40","æȘ•æȘƒæȘšæȘ€æȘ‘æ©żæȘŠæȘšæȘ…æȘŒæȘ’æ­›æź­æ°‰æżŒæŸ©æżŽæż”æżŁæżœæż­æż§æżŠæżžæżČæżæżąæżšç‡Ąç‡±ç‡šç‡Čç‡€ç‡°ç‡ąçłçźçŻç’—ç’Č璫璐ç’Șç’­ç’±ç’„ç’Żç”ç”‘ç”’ç”ç–„ç™ƒç™ˆç™‰ç™‡çš€ç›©çž”çž«çžČ瞷瞶"], -["eda1","çžŽçž±çžšçŸ°çŁłçŁœç€‚çŁ»çŁŒçŁČ瀅çŁčçŁŸç€„çŠ«çŠšç©œç©›ç©–ç©˜ç©”ç©šçȘŸç«€ç«ç°…簏çŻČç°€çŻżçŻ»ç°ŽçŻŽç°‹çŻłç°‚ç°‰ç°ƒç°çŻžçŻœç°†çŻ°çŻ±ç°ç°Šçłšçž­çžŒçč‚çžłéĄˆçžžçžȘçč‰çč€çč‡çž©çčŒçž°çž»çž¶çč„çžșçœ…çœżçœŸçœœçżŽçżČè€Źè†»è‡„è‡Œè‡Šè‡…è‡‡è†Œè‡©è‰›è‰šè‰œè–ƒè–€è–è–§è–•è– è–‹è–Łè•»è–€è–šè–ž"], -["ee40","è•·è•Œè–‰è–Ąè•șè•žè•—è–Žè––è–†è–è–™è–è–è–ąè–‚è–ˆè–…è•č蕶薘薐薟虚螟èžȘèž­èŸ…èž°èžŹèžčèž”èžŒèžźèŸ‰èŸƒèŸ‚èŸŒèž·èžŻèŸ„èŸŠèžŽèž¶èžżèžžèžœèŸžèžČè€”è€łè€Œè€Ÿè„è„’è€·è„‚èŠ­èŠŻèŠźè§Čè§łèŹž"], -["eea1","èŹ˜èŹ–èŹ‘èŹ…èŹ‹èŹąèŹèŹ’èŹ•èŹ‡èŹèŹˆèŹ†èŹœèŹ“èŹšè±è±°è±Čè±±è±ŻèȕèȔèłčè”ŻèčŽèčèč“èčèčŒèč‡èœƒèœ€é‚…éŸé„žé†šé†ąé†›é†™é†Ÿé†Ąé†é† éŽĄéŽƒéŽŻé€é–é‡éŒé˜éœé¶é‰éé‘é é­éŽéŒéȘéčé—é•é’éé±é·é»éĄéžéŁé§éŽ€éŽé™é—‡é—€é—‰é—ƒé—…é–·éšźéš°éšŹéœ éœŸéœ˜éœéœ™éžšéžĄéžœ"], -["ef40","éžžéžéŸ•éŸ”éŸ±éĄéĄ„éĄŠéĄ‰éĄ…éĄƒé€„é€«é€Źé€Ș逳é€Čé€Żé€­é€±é€°éŠ˜éŠŁéŠĄéš‚é§șé§Žé§·é§č駞駶駻駜駟駌隃éȘŸé«Ÿé«œéŹé«Œé­ˆéźšéźšéźžéź›éźŠéźĄéź„éź€éź†éźąéź éźŻéŽłé”é”§éŽ¶éŽźéŽŻéŽ±éŽžéŽ°"], -["efa1","é”…é”‚é”ƒéŽŸéŽ·é”€éŽœçż”éŽ­éșŠéș‰éșéș°é»ˆé»šé»»é»żéŒ€éŒŁéŒąéœ”éŸ ć„±ć„­ć„źćš˜ćšœćš—ćššćšćš™ć„°ćŹŒć±©ć±Șć·€ćč­ćčźæ‡˜æ‡Ÿæ‡­æ‡źæ‡±æ‡Șæ‡°æ‡«æ‡–æ‡©æ“żæ”„æ“œæ“žæ”æ”ƒæ“Œæ–”æ—›æ›šæ››æ›˜æ«…æȘčæȘœæ«Ąæ«†æȘșæȘ¶æȘ·æ«‡æȘŽæȘ­æ­žæŻ‰æ°‹ç€‡ç€Œç€ç€ç€…ç€”ç€Žæżżç€€æż»ç€ŠæżŒæż·ç€Šçˆç‡żç‡č爃燜獶"], -["f040","ç’žç“€ç’”ç“ç’Ÿç’¶ç’»ç“‚ç””ç”“ç™œç™€ç™™ç™ç™“ç™—ç™šçšŠçšœç›ŹçŸ‚çžșçŁżç€Œç€“ç€”ç€‰ç€ç€’ç€‘çŠ­çŠŹç©Ÿç°œç°©ç°™ç° ç°Ÿç°­ç°ç°Šç°šç°ąç°„ç°°çčœçčçč–çčŁçč˜çčąçčŸçč‘çč çč—çč“çŸ”çŸłçż·çżžè”è‡‘è‡’"], -["f0a1","è‡è‰Ÿè‰žè–Žè—†è—€è—ƒè—‚è–łè–”è–œè—‡è—„è–żè—‹è—Žè—ˆè—…è–±è–¶è—’è˜€è–žè–·è–Ÿè™©èŸ§èŸŠèŸąèŸ›èŸ«èŸȘèŸ„èŸŸèŸłèŸ€èŸ”èŸœèŸ“èŸ­èŸ˜èŸŁèž€èŸ—èŸ™è èŸŽèŸšèŸè„“è„‹è„è„Œè„†è„è„‘è„‰èŹȘèŹ§èŹŁèŹłèŹ°èŹ”è­‡èŹŻèŹŒèŹŸèŹ±èŹ„èŹ·èŹŠèŹ¶èŹźèŹ€èŹ»èŹœèŹș豂豔èșèȘèČ—èłŸèŽ„èŽ‚èŽ€èčœèčąèč èč—èč–èčžèč„èč§"], -["f140","èč›èčšèčĄèčèč©èč”蜆蜇蜈蜋鄚é„șé„»é„Ÿé†šé†„é†§é†Żé†Ș鎔鎌鎒鎷鎛鎝鎉鎧鎎éŽȘ鎞鎊鎕鎈鎙鎟鎍鎱鎑éŽČéŽ€éŽšéŽŽéŽŁéŽ„é—’é—“é—‘éšłé›—é›šć·‚é›Ÿé›˜é›éœŁéœąéœ„éžŹéžźéžšéž«éž€éžȘ"], -["f1a1","éžąéž„éŸ—éŸ™éŸ–éŸ˜éŸșéĄéĄ‘éĄ’éąžé„é€Œé€șéšéš‹éš‰éšéš„éš‘éšŠéš…éš‡éš†é«€é«œéŹˆéŹ„éŹ…éŹ©éŹ”é­Šé­Œé­‹éŻ‡éŻ†éŻƒéźżéŻéź”éźžéŻ“éź¶éŻ„éźčéźœé”œé”“é”é”Šé”›é”‹é”™é”–é”Œé”—é”’é””é”Ÿé”˜é”šéșŽéșŒé»ŸéŒéŒ€éŒ–錄錫éŒȘéŒ©éŒšéœŒéœ•ć„Žć„”ćŠ–ć‹·ćŽŽćš«ćš­ćšŠćš§ćšȘćšŹćŁšćŁćŁ›ć€’ćŹœćŹŸćŹżć·ƒćč°"], -["f240","ćŸżæ‡»æ”‡æ”æ”æ”‰æ”Œæ”Žæ–„æ—žæ—æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«æ««æ«æ«æ«žæ­ æź°æ°Œç€™ç€§ç€ ç€–ç€«ç€Ąç€ąç€Łç€©ç€—ç€€ç€œç€ȘçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ„çŠŠçŠ€çŠŁçŠĄç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç€ç€›"], -["f2a1","ç€Ąç€œç€—ç€žçŠ°ç©§ç©šç°łç°Œç°č簏簻糏çłȘçč¶çč”çčžçč°çč·çčŻçčșçčČçčŽçčšçœ‹çœŠçŸƒçŸ†çŸ·çżœçżŸèžè‡—è‡•è‰€è‰Ąè‰Łè—«è—±è—­è—™è—Ąè—šè—šè——è—Źè—Čè—žè—˜è—Ÿè—Łè—œè—‘è—°è—Šè—Żè—žè—ąè €èŸșè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸŒè ˆèŸżè Šè ‚è„ąè„šè„›è„—è„Ąè„œè„˜è„è„™èŠˆèŠ·èŠ¶è§¶è­è­ˆè­Šè­€è­“è­–è­”è­‹è­•"], -["f340","譑譂譒譗豃豷豶èČšèŽ†èŽ‡èŽ‰è¶Źè¶Șè¶­è¶«èč­èčžèčłèčȘèčŻèč»è»‚èœ’èœ‘èœèœèœ“èŸŽé…€é„żé†°é†­éžé‡éé‚éšééčéŹéŒé™éŽ©éŠéŠé”éźéŁé•é„éŽé€é’é§é•œé—šé—›é›Ąéœ©éœ«éœŹéœšéœŠ"], -["f3a1","éžłéž·éž¶éŸéŸžéŸŸéĄœéĄ™éĄéĄ—éążéąœéą»éąŸé„ˆé„‡é„ƒéŠŠéŠ§éššéš•éš„éšéš€éš›éšąéš éš§éšŁéšžéšœéš”é«‚éŹ‹éŹŠéŹŽéŹŒéŹ·éŻȘéŻ«éŻ éŻžéŻ€éŻŠéŻąéŻ°éŻ”éŻ—éŻŹéŻœéŻ™éŻ„éŻ•éŻĄéŻšé”·é¶é¶Šé¶„é¶ˆé”±é¶€é”žé¶†é¶‹é¶Œé”œé”«é”Žé””é”°é”©é¶…é”łé”»é¶‚é”Żé”č锿鶇锚éș”éș‘é»€é»ŒéŒ­éœ€éœéœéœ–éœ—éœ˜ćŒ·ćšČ"], -["f440","暔暳棣歅淆淇滟滯激濁æ‡čæ”—æ”–æ”•æ”“æ—Ÿæ›šæ›Łæ›€æ«łæ«°æ«Ș櫚æ«čæ«±æ«źæ«Żç€Œç€”ç€Żç€·ç€Žç€±ç‚ç€žç€żç€șç€čç€ç€»ç€łççˆ“çˆ”çŠšçœçŒç’ș皫çšȘ皟盭矌矎矏矍çŸČ瀄瀣瀧瀚瀀瀩"], -["f4a1","çŠČç©źç©Źç©­ç«·ç±‰ç±ˆç±Šç±‡ç±…çłźçč»çčŸçșçș€çŸșçżżèčè‡›è‡™èˆ‹è‰šè‰©è˜ąè—żè˜è—Ÿè˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—œè ™è è ‘è —è “è –è„Łè„ŠèŠčè§·è­ è­Șè­è­šè­Łè­„è­§è­­è¶źèș†èșˆèș„蜙蜖蜗蜕蜘蜚邍酃酁醷醔é†Čé†łé‹é“é»é éé”éŸé•ééšé™éé”é€é·é‡éŽé–é’éș鐉鏾鐊鏿"], -["f540","éŒéŒé¶é‘é†é—žé— é—ŸéœźéœŻéžčéž»éŸœéŸŸéĄ éĄąéĄŁéĄŸéŁéŁ‚é„é„Žé„™é„Œé„‹é„“éšČ階隱随éšȘéš¶éš©éšźéšžéš­é«‡é«Šé«†éŹéŹ’éŹ‘é°‹é°ˆéŻ·é°…é°’éŻžé±€é°‡é°Žé°†é°—é°”é°‰é¶Ÿé¶™é¶€é¶é¶’é¶˜é¶é¶›"], -["f5a1","鶠鶔鶜é¶Șé¶—é¶Ąé¶šé¶ąé¶šé¶žé¶Łé¶żé¶©é¶–é¶Šé¶§éș™éș›éșšé»„é»€é»§é»ŠéŒ°éŒźéœ›éœ éœžéœéœ™éŸ‘ć„șć„čćŠ˜ćŠ—ć›ƒćšœćšŸć­ˆć­‡ć·‹ć·ć»±æ‡œæ”›æŹ‚æ«ŒæŹƒæ«žæŹ€çƒç„çŠçˆç‰ç…ç†çˆçˆšçˆ™çŸç”—ç™ȘçŸç€­ç€±ç€Żç±”ç±“çłČçșŠçș‡çșˆçș‹çș†çșçœçŸ»è€°è‡è˜˜è˜Șè˜Šè˜Ÿè˜Łè˜œè˜™è˜§è˜źè˜Ąè˜ è˜©è˜žè˜„"], -["f640","è ©è è ›è  è €è œè «èĄŠè„­è„©è„źè„«è§șè­čè­žè­…è­șè­»èŽèŽ”è¶ŻèșŽèșŒèœžèœ›èœé…†é…„é……é†čéżé»é¶é©éœéŒé°éčéȘé·éŹé‘€é±é—„é—€é—Łéœ”éœșéžżéŸĄéĄ€éŁ‰éŁ†éŁ€é„˜é„–éšč障驆驄驂驁éšș"], -["f6a1","éšżé«éŹ•éŹ—éŹ˜éŹ–éŹșé­’é°«é°é°œé°Źé°Łé°šé°©é°€é°Ąé¶·é¶¶é¶Œé·é·‡é·Šé·é¶Ÿé·…é·ƒé¶»é¶”é·Žé¶čé¶șé¶Źé·ˆé¶±é¶­é·Œé¶łé·é¶Čéčșéșœé»«é»źé»­éŒ›éŒ˜éŒšéŒ±éœŽéœ„需韒äșčć›†ć›…ć›‹ć„±ć­‹ć­Œć·•ć·‘ć»Čæ”Ąæ” æ”Šæ”ąæŹ‹æŹˆæŹ‰æ°ç•ç–ç—ç’çˆžçˆŸçŠ©çżç“˜ç“•ç“™ç“—ç™­çš­ç€”çŠŽç©°ç©±ç±—ç±œç±™ç±›ç±š"], -["f740","糎糱çș‘çœçŸ‡è‡žè‰«è˜Žè˜”è˜łè˜Źè˜Čè˜¶è Źè šè Šè Șè „è„±èŠżèŠŸè§»è­Ÿèź„èź‚èź†èź…è­żèŽ•èș•èș”èșšèș’èșèș–èș—èœ èœąé…‡é‘Œé‘é‘Šé‘‹é‘é‘‡é‘…é‘ˆé‘‰é‘†éœżéŸŁéĄȘéĄ©éŁ‹é„”é„›é©Žé©“é©”é©Œé©é©ˆé©Š"], -["f7a1","é©‰é©’é©é«éŹ™éŹ«éŹ»é­–é­•é±†é±ˆé°żé±„é°čé°łé±é°Œé°·é°Žé°Č鰜鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷔鷕鷝éș¶é»°éŒ”éŒłéŒČéœ‚éœ«éŸ•éŸąć„œćŠ™ćŁšćŁ§ć„Čć­ć·˜è Żćœæˆæˆƒæˆ„æ”©æ”„æ––æ›«æŹ‘æŹ’æŹæŻŠç›çšçˆąçŽ‚çŽçŽƒç™°çŸ”ç±§ç±Šçș•è‰Źè˜ș虀è˜č蘌蘱蘻蘟蠰è Čè źè łè„¶è„Žè„łè§Ÿ"], -["f840","èźŒèźŽèź‹èźˆè±…èŽ™èș˜èœ€èœŁé†Œé‘ąé‘•é‘é‘—é‘žéŸ„éŸ…é €é©–é©™éŹžéŹŸéŹ é±’é±˜é±é±Šé±é±‹é±•é±™é±Œé±Žé·»é··é·Żé·Łé·«é·žé·€é·¶é·Ąé·źé·Šé·Č鷰鷹鷏鷎鷳鷚鷭黂黐é»Čé»łéŒ†éŒœéŒžéŒ·éŒ¶éœƒéœ"], -["f8a1","éœ±éœ°éœźéœŻć›“ć›ć­Žć±­æ”­æ›­æ›źæŹ“çŸçĄçç çˆŁç“›ç“„çŸ•ç€žçŠ·çŠ¶ç±Șçș—çŸ‰è‰­è™ƒè žè ·è ”èĄ‹èź”èź•èșžèșŸèș èșé†Ÿé†œé‡‚é‘«é‘šé‘©é›„é†éƒé‡éŸ‡éŸ„é©žé«•é­™é±Łé±§é±Šé±ąé±žé± éž‚é·Ÿéž‡éžƒéž†éž…éž€éžéž‰é·żé·œéž„éș éŒžéœ†éœŽéœ”éœ¶ć›”æ”źæ–žæŹ˜æŹ™æŹ—æŹšçąçˆŠçŠȘ矘矙ç€č籩籫糶çșš"], -["f940","çș˜çș›çș™è‡ è‡Ąè™†è™‡è™ˆè„čè„șè„Œè„»è§żèź˜èź™èș„èș€èșŁé‘źé‘­é‘Żé‘±é‘łé‰éĄČé„Ÿé±šé±źé±­éž‹éžéžéžéž’éž‘éșĄé»”錉震霞霻éœșéœčćœžçŠç±Żè Œè¶ČèșŠé‡ƒé‘Žé‘žé‘¶é‘”é© é±Žé±łé±±é±”éž”éž“é»¶éŒŠ"], -["f9a1","éŸ€çšç„çł·è™Șè Ÿè œè żèźžèȜèș©è»‰é‹éĄłéĄŽéŁŒé„ĄéŠ«é©€é©Šé©§éŹ€éž•éž—éœˆæˆ‡æŹžçˆ§è™Œèșšé’‚é’€é’é©©é©šéŹźéž™çˆ©è™‹èźŸé’ƒé±čéș·ç™”é©«é±ș鞝灩çȘéș€éœŸéœ‰éŸ˜çąéŠčèŁćą»æ’çȧć«șâ•”â•Šâ•—â• â•Źâ•Łâ•šâ•©â•â•’â•€â••â•žâ•Șâ•Ąâ•˜â•§â•›â•“â•„â•–â•Ÿâ•«â•ąâ•™â•šâ•œâ•‘â•â•­â•źâ•°â•Żâ–“"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json deleted file mode 100644 index 4fa61ca..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json +++ /dev/null @@ -1,182 +0,0 @@ -[ -["0","\u0000",127], -["8ea1","ïœĄ",62], -["a1a1","ă€€ă€ă€‚ïŒŒïŒŽăƒ»ïŒšïŒ›ïŒŸïŒă‚›ă‚œÂŽïœ€ÂšïŒŸïżŁïŒżăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒâ€•â€ïŒïŒŒïœžâˆ„ïœœâ€Šâ€„â€˜â€™â€œâ€ïŒˆïŒ‰ă€”ă€•ïŒ»ïŒœïœ›ïœă€ˆ",9,"ïŒ‹ïŒÂ±Ă—Ă·ïŒâ‰ ïŒœïŒžâ‰Šâ‰§âˆžâˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïż„ïŒ„ïż ïżĄïŒ…ïŒƒïŒ†ïŒŠïŒ Â§â˜†â˜…â—‹â—â—Žâ—‡"], -["a2a1","◆□■△â–Čâ–œâ–Œâ€»ă€’â†’â†â†‘â†“ă€“"], -["a2ba","∈∋⊆⊇⊂⊃âˆȘ∩"], -["a2ca","âˆ§âˆšïżąâ‡’â‡”âˆ€âˆƒ"], -["a2dc","âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹ"], -["a2f2","ʼn♯♭â™Ș†‥¶"], -["a2fe","◯"], -["a3b0","",9], -["a3c1","ïŒĄ",25], -["a3e1","",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"ÎŁ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","â”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚"], -["ada1","①",19,"Ⅰ",9], -["adc0","ă‰ăŒ”ăŒąăăŒ˜ăŒ§ăŒƒăŒ¶ă‘ă—ăŒăŒŠăŒŁăŒ«ăŠăŒ»ăŽœăŽăŽžăŽŽăŽă„ăŽĄ"], -["addf","ă»ă€ă€Ÿâ„–ăâ„ĄăŠ€",4,"㈱ăˆČăˆčăŸăœăŒâ‰’â‰Ąâˆ«âˆźâˆ‘âˆšâŠ„âˆ âˆŸâŠżâˆ”âˆ©âˆȘ"], -["b0a1","äșœć”–ćšƒé˜żć“€æ„›æŒšć§¶é€ąè‘”茜穐æ‚ȘæĄæž„æ—­è‘ŠèŠŠéŻ”æą“ćœ§æ–Ąæ‰±ćź›ć§è™»éŁŽç”ąç¶ŸéźŽæˆ–çČŸèą·ćź‰ćș”æŒ‰æš—æĄˆé—‡éžæä»„äŒŠäœäŸć‰ć›Čć€·ć§”ćšć°‰æƒŸæ„æ…°æ˜“æ€…ç‚șç•ç•°ç§»ç¶­ç·ŻèƒƒèŽèĄŁèŹ‚é•éș㌻äș•äș„㟟è‚ČéƒçŁŻäž€ćŁ±æșąé€žçšČèŒšèŠ‹é°Żć…ć°ć’œć“Ąć› ć§»ćŒ•éŁČ淫胀蔭"], -["b1a1","é™ąé™°éš éŸ»ć‹ćłćź‡çƒçŸœèż‚é›šćŻé”œçȘșäž‘çą“è‡ŒæžŠć˜˜ć”„æŹè”šé°»ć§„ćŽ©æ”Šç“œé–ć™‚äș‘運é›Čèé€ŒćĄć–¶ćŹ°ćœ±æ˜ æ›łæ „æ°žæłłæŽ©ç‘›ç›ˆç©Žé Žè‹±èĄ›è© é‹­æ¶Čç–«ç›Šé§…æ‚ŠèŹè¶Šé–ČæŠŽćŽ­ć††ćœ’ć °ć„„ćźŽć»¶æ€šæŽ©æŽæČżæŒ”ç‚Žç„”ç…™ç‡•çŒżçžè‰¶è‹‘è–—é é‰›éŽ›ćĄ©æ–Œæ±šç”„ć‡čć€źć„„ćŸ€ćżœ"], -["b2a1","抌æ—șæšȘæŹ§æźŽçŽ‹çżè„–éŽŹéŽŽé»„ćČĄæČ–è»ć„„ć±‹æ†¶è‡†æĄ¶ç‰Ąäč™äżșćžæ©æž©ç©éŸłäž‹ćŒ–ä»źäœ•äŒœäŸĄäœłćŠ ćŻć˜‰ć€ć«ćź¶ćŻĄç§‘æš‡æžœæž¶æ­ŒæČłç«ç‚çŠçŠŸçšŒçź‡èŠ±è‹›èŒ„è·èŻè“èŠèȘČ昩èČšèżŠéŽéœžèšŠäż„ćłšæˆ‘ç‰™ç”»è‡„èŠœè›Ÿèł€é›…é€“é§•ä»‹äŒšè§Łć›žćĄŠćŁŠć»»ćż«æ€Șæ‚”æąæ‡æˆ’æ‹æ”č"], -["b3a1","é­æ™Šæą°æ”·ç°ç•Œçš†ç””èŠ„èŸč開階èČć‡±ćŠŸć€–ć’łćźłćŽ–æ…šæŠ‚æ¶Żçąè“‹èĄ—è©Č鎧éȘžæ”ŹéŠšè›™ćžŁæŸżè›ŽéˆŽćŠƒćš‡ć„ć»“æ‹Ąæ’čæ Œæ žæź»çČçąșç©«èŠšè§’è”«èŒƒéƒ­é–Łéš”é©ć­ŠćČłæ„œéĄéĄŽæŽ›çŹ æš«æ©żæą¶é°æœŸć‰Čć–æ°æ‹ŹæŽ»æž‡æ»‘è‘›è€èœ„äž”é°čć¶æ€›æšș鞄æ Șć…œç«ƒè’Čé‡œéŽŒć™›éŽšæ ąèŒ…è±"], -["b4a1","çČ„ćˆˆè‹…ç“ŠäčŸäŸƒć† ćŻ’ćˆŠć‹˜ć‹§ć·»ć–šć Ș槩漌漘毛ćčČćč迂ٿ„Ÿæ…Łæ†Ÿæ›æ•ąæŸ‘æĄ“æŁșæŹŸæ­“æ±—æŒąæŸ—æœ…ç’°ç”˜ç›Łçœ‹ç«żçźĄç°Ąç·©çŒ¶çż°è‚è‰ŠèŽžèŠłè«ŒèČ«é‚„é‘‘é–“é–‘é–ąé™„éŸ“é€šèˆ˜äžžć«ćČžć·ŒçŽ©ç™ŒçœŒćČ©çż«èŽ‹é›é ‘éĄ”éĄ˜äŒäŒŽć±ć–œć™šćŸș愇揉毄ćȐ澌ćčŸćżŒæźæœșæ——æ—ąæœŸæŁ‹æŁ„"], -["b5a1","æ©Ÿćž°æŻ…æ°—æ±œç•żç„ˆć­Łçš€çŽ€ćŸœèŠèš˜èČŽè”·è»ŒèŒéŁąéšŽéŹŒäș€ćœć„€ćŠ“ćźœæˆŻæŠ€æ“ŹæŹș犠疑焇矩蟻èȘŒè­°æŽŹèŠéž ć‰ćƒć–«æĄ”æ©˜è©°ç §æ”é»ćŽćźąè„šè™é€†äž˜äč…ä»‡äŒ‘ćŠćžćźźćŒ“æ€„救朜求æ±ČæłŁçžçƒç©¶çȘźçŹˆçŽšçłŸç”Šæ—§ç‰›ćŽ»ć±…ć·šæ‹’æ‹ æŒ™æž è™šèš±è·é‹žæŒçŠŠé­šäșšäș«äșŹ"], -["b6a1","äŸ›äŸ ćƒ‘ć…‡ç«¶ć…±ć‡¶ć”ćŒĄćżć«ć–ŹćąƒćłĄćŒ·ćœŠæ€Żææ­æŒŸæ•™æ©‹æłç‹‚ç‹­çŸŻèƒžè„…èˆˆè•Žéƒ·éĄéŸżé„—é©šä»°ć‡ć°­æšæ„­ć±€æ›Čæ„”çŽ‰æĄçČćƒ…ć‹€ć‡ć·ŸéŒŠæ–€æŹŁæŹœçŽçŠçŠœç­‹ç·ŠèŠčèŒèĄżè„ŸèŹčèż‘é‡‘ćŸéŠ€äčć€¶ć„ćŒș狗玖矩苊èșŻé§†é§ˆé§’ć…·æ„šè™žć–°ç©ș恶毓遇隅äžČæ«›é‡§ć±‘ć±ˆ"], -["b7a1","掘çȘŸæČ“éŽèœĄçȘȘ熊隈çČ‚æ —çč°æĄ‘鍬ć‹Čć›è–«èš“çŸ€è»éƒĄćŠèąˆç„äż‚ć‚Ÿćˆ‘ć…„ć•“ćœ­çȘćž‹ć„‘ćœąćŸ„æ”æ…¶æ…§æ†©æŽČæșæ•Źæ™ŻæĄ‚æž“ç•Šçšœçł»ç”Œç¶™çč‹çœ«èŒŽèŠè›èšˆè©Łè­Šè»œé šé¶èŠžèżŽéŻšćŠ‡æˆŸæ’ƒæż€éš™æĄć‚‘æŹ æ±șæœ”ç©Žç”èĄ€èšŁæœˆä»¶ć€čć€Šć„ć…Œćˆžć‰Łć–§ćœć …ć«Œć»șæ†Čæ‡žæ‹łæČ"], -["b8a1","æ€œæš©ç‰œçŠŹçŒźç ”çĄŻç”čçœŒè‚©èŠ‹èŹ™èłąè»’éŁé”é™ș顕鹓éčžć…ƒćŽŸćŽłćč»ćŒŠæž›æșçŽ„çŸç”ƒèˆ·èš€è«ș限äčŽć€‹ć€ć‘Œć›ș槑歀深ćș«ćŒ§æˆžæ•…æžŻæč–ç‹çłŠèąŽè‚ĄèƒĄè°è™ŽèȘ‡è·šéˆ·é›‡éĄ§éŒ“äș”äș’äŒćˆć‘‰ćŸćšŻćŸŒćŸĄæ‚Ÿæą§æȘŽç‘šçąèȘžèȘ€è­·é†äčžé݉äș€äœŒäŸŻć€™ć€–ć…‰ć…ŹćŠŸćŠčć‹ŸćŽšćŁć‘"], -["b9a1","ćŽć–‰ć‘ćžąć„œć­”ć­ćźć·„ć·§ć··ćčžćșƒćșšćș·ćŒ˜æ’æ…ŒæŠ—æ‹˜æŽ§æ”»æ˜‚æ™ƒæ›Žæ­æ Ąæą—æ§‹æ±ŸæŽȘæ”©æžŻæșç”Čçš‡çĄŹçšżçł çŽ…çŽ˜ç”žç¶±è€•è€ƒè‚Żè‚±è…”è†èˆȘè’èĄŒèĄĄèŹ›èČąèłŒéƒŠé…”é‰±ç żé‹Œé–€é™é …éŠ™é«˜éŽ»ć‰›ćŠ«ć·ćˆćŁ•æ‹·æż è±Ș蜟éșčć…‹ćˆ»ć‘Šć›œç©€é…·é” é»’ç„æŒ‰è…°ç”‘ćżœæƒšéȘšç‹›èŸŒ"], -["baa1","æ­€é ƒä»Šć›°ć€ćąŸć©šæšæ‡‡æ˜æ˜†æ čæą±æ··ç—•çŽșè‰źé­‚äș›äœć‰ć”†ć”Żć·Šć·źæŸ»æČ™ç‘łç ‚è©éŽ–èŁŸććș§æŒ«ć‚”ć‚Źć†æœ€ć“‰ćĄžćŠ»ćź°ćœ©æ‰æŽĄæ œæ­łæžˆçœé‡‡çŠ€ç •ç Šç„­æ–ŽçŽ°èœèŁèŒ‰éš›ć‰€ćœšæçœȘèȡ憮杂é˜Șć ș把肎ć’ČćŽŽćŸŒçą•é·șäœœć‰Šć’‹æŸæ˜šæœ”æŸ”çȘ„ç­–çŽąéŒŻæĄœéź­çŹčćŒ™ć†Šćˆ·"], -["bba1","ćŻŸæ‹¶æ’źæ“Šæœ­æźșè–©é›‘çšéŻ–æŒéŒ†éź«çšżæ™’äž‰ć‚˜ć‚ć±±æƒšæ’’æ•ŁæĄŸç‡ŠçŠç”Łçź—çș‚èš•èźƒèł›é…žé€æ–Źæš«æź‹ä»•ä»”äŒșäœżćˆș揾ćČć—Łć››ćŁ«ć§‹ć§‰ć§żć­ć±ćž‚ćž«ćż—æ€æŒ‡æ”Żć­œæ–Żæ–œæ—šæžæ­ąæ­»æ°ç…ç„‰ç§çłžçŽ™çŽ«è‚ąè„‚è‡łèŠ–è©žè©©è©ŠèȘŒè«źèł‡èłœé›ŒéŁŒæ­Żäș‹äŒŒäŸć…ć­—ćŻș慈持時"], -["bca1","æŹĄæ»‹æČ»çˆŸç’œç—”çفç€șè€Œè€łè‡Ș蒔蟞汐éčżćŒè­˜éŽ«ç«șè»žćźé›«äžƒć±ćŸ·ć€±ć«‰ćź€æ‚‰æčżæŒ†ç–ŸèłȘćźŸè”€çŻ ćČæŸŽèŠć±Ąè•ŠçžžèˆŽć†™ć°„æšè”Šæ–œç…źç€ŸçŽ—è€…èŹè»Šéźè›‡é‚Ș怟ć‹șć°șæ“çŒçˆ”é…Œé‡ˆéŒ«è‹„ćŻ‚ćŒ±æƒčäž»ć–ćźˆæ‰‹æœ±æźŠç‹©ç çšźè…«è¶Łé…’éŠ–ć„’ć—ć‘ȘćŻżæŽˆæščç¶Źéœ€ć›šćŽć‘š"], -["bda1","ćź—ć°±ć·žäżźæ„æ‹ŸæŽČ秀秋甂çčçż’è‡­èˆŸè’èĄ†è„ČèźèčŽèŒŻé€±é…‹é…Źé›†é†œä»€äœć……ććŸ“æˆŽæŸ”æ±æž‹çŁçžŠé‡éŠƒć”ć€™ćźżæ·‘ç„çžźçČ›ćĄŸç†Ÿć‡șèĄ“èż°äżŠćł»æ˜„çžŹç«Łèˆœé§żć‡†ćŸȘæ—Źæ„Żæź‰æ·łæș–æœ€ç›ŸçŽ”ć·Ąé”é†‡é †ć‡Šćˆæ‰€æš‘æ›™æžšćș¶ç·’çœČæ›žè–Żè—·è«žćŠ©ć™ć„łćșćŸæ•é‹€é™€ć‚·ć„Ÿ"], -["bea1","ć‹ćŒ ć‡ćŹć“šć•†ć”±ć˜—ć„šćŠŸćšŒćź”ć°†ć°ć°‘ć°šćș„ćșŠć» ćœ°æ‰żæŠ„æ‹›æŽŒæ·æ˜‡æ˜Œæ˜­æ™¶æŸæąąæšŸæš”æČŒæ¶ˆæž‰æč˜ç„Œç„Šç…§ç—‡çœçĄç€ç„„称章珑çȧçŽčè‚–è–è’‹è•‰èĄèŁłèšŸèšŒè©”è©łè±Ąèłžé†€é‰ŠéŸé˜éšœéž˜äžŠäžˆäžžäč—ć†—ć‰°ćŸŽć ŽćŁŒćŹąćžžæƒ…æ“ŸæĄæ–æ”„çŠ¶ç•łç©Łè’žè­Čé†žéŒ ć˜±ćŸŽéŁŸ"], -["bfa1","æ‹­æ€æź–ç‡­çč”職è‰Čè§ŠéŁŸè•èŸ±ć°»äŒžäżĄäŸ”ć”‡ćš ćŻćŻ©ćżƒæ…ŽæŒŻæ–°æ™‹æŁźæŠ›æ”žæ·±ç”łç–čçœŸç„žç§ŠçŽłè‡ŁèŠŻè–ȘèŠȘèšșèș«èŸ›é€Č針震äșșä»ćˆƒćĄ”ćŁŹć°‹ç”šć°œè…ŽèšŠèż…é™Łé­çŹ„è«é ˆé…ąć›łćŽšé€—ćčćž‚ćž„æŽšæ°Žç‚ŠçĄçČ‹çż èĄ°é‚é…”éŒéŒ˜éšç‘žé«„ćŽ‡ć”©æ•°æžąè¶šé››æźæ‰æ€™è…é —é›€èŁŸ"], -["c0a1","柄æ‘șćŻžäž–ç€Źç•æ˜Żć‡„ćˆ¶ć‹ąć§“ćŸæ€§æˆæ”żæ•Žæ˜Ÿæ™ŽæŁČæ –æ­Łæž…ç‰Č生盛çČŸè–ćŁ°èŁœè„żèȘ èȘ“è«‹é€é†’é’é™æ–‰çšŽè„†éš»ćž­æƒœæˆšæ–„æ˜”æžçŸłç©ç±çžŸè„ŠèČŹè”€è·ĄèčŸçą©ćˆ‡æ‹™æŽ„摂折蚭çȘƒçŻ€èȘŹé›Șç”¶èˆŒè‰ä»™ć…ˆćƒć ćźŁć°‚ć°–ć·æˆŠæ‰‡æ’°æ “æ Žæł‰æ”…æŽ—æŸ“æœœç…Žç…œæ—‹ç©żçź­ç·š"], -["c1a1","çčŠçŸšè…ș舛èˆčè–Šè©źèłŽè·”éžé·éŠ­éŠ‘é–ƒéźźć‰ć–„æŒžç„¶ć…šçŠ…çč•è†łçłŽć™ŒćĄ‘ćČšæŽȘ曟曜愚狙疏疎瀎焖租çČ—çŽ ç”„è˜‡èšŽé˜»éĄéŒ ćƒ§ć‰”ćŒćąć€‰ć–ȘćŁźć„çˆœćź‹ć±€ćŒæƒŁæƒłæœæŽƒæŒżæŽ»æ“æ—©æ›čć·Łæ§æ§œæŒ•ç‡„äș‰ç—©ç›žçȘ“çłŸç·ç¶œèĄè‰è˜è‘Źè’Œè—»èŁ…è”°é€é­éŽ—éœœéš’ćƒćą—æ†Ž"], -["c2a1","è‡“è””èŽˆé€ äżƒćŽć‰‡ćłæŻæ‰æŸæžŹè¶łé€Ÿäż—ć±žèłŠæ—ç¶šć’èą–ć…¶æƒć­˜ć­«ć°Šææ‘éœä»–ć€šć€Șæ±°è©‘ć”Ÿć •ćŠ„æƒ°æ‰“æŸèˆ”æ„•é™€é§„éššäœ“ć †ćŻŸè€ćČ±ćžŻćŸ…æ€ æ…‹æˆŽæ›żæł°æ»žèƒŽè…żè‹”èą‹èČžé€€é€źéšŠé»›éŻ›ä»Łć°ć€§çŹŹé†éĄŒé·čæ»ç€§ć“ć•„ćź…æ‰˜æŠžæ‹“æČąæżŻçąèš—éžæżè«ŸèŒžć‡§è›žćȘ"], -["c3a1","ć©äœ†é”èŸ°ć„Șè„±ć·œç«ȘèŸżæŁšè°·ç‹žé±ˆæšœèȘ°äžčć˜ć˜†ćŠæ‹…æŽąæ—Šæ­Žæ·Ąæč›ç‚­çŸ­ç«ŻçźȘ綻耜胆蛋èȘ•é›ć›ŁćŁ‡ćŒŸæ–­æš–æȘ€æź”ç”·è«‡ć€€çŸ„ćœ°ćŒ›æ„æ™șæ± ç—Žçššçœźè‡Žèœ˜é…éŠłçŻ‰ç•œç«č筑蓄逐秩çȘ’èŒ¶ć«Ąç€äž­ä»Čćź™ćż æŠœæ˜ŒæŸ±æłšè™«èĄ·èš»é…Žé‹łé§æš—ç€ŠçŒȘ苧著èȯ䞁慆懋斋比"], -["c4a1","澖澳ćșćŒ”ćŒ”ćœ«ćŸŽæ‡ČæŒ‘æšąæœæœźç‰’ç”șçœș聎è„č腞蝶èȘżè«œè¶…è·łéŠšé•·é ‚éł„ć‹…æ—ç›Žæœ•æČˆçèłƒéŽźé™łæŽ„ćąœæ€Žæ§ŒèżœéŽšç—›é€šćĄšæ ‚æŽŽæ§»äœƒæŒŹæŸ˜èŸ»è”Šç¶Žé”æ€żæœ°ćȘ棷描玏çˆȘ搊釣鶎äș­äœŽćœć”扃èČžć‘ˆć €ćźšćžćș•ćș­ć»·ćŒŸæ‚ŒæŠ”æŒșææąŻæ±€çą‡çŠŽçš‹ç· è‰‡èš‚è«Šèč„逓"], -["c5a1","é‚žé„­é‡˜éŒŽæł„æ‘˜æ“ąæ•”æ»Žçš„çŹ›é©é‘æșșć“ČćŸčæ’€èœèż­é‰„ć…žćĄ«ć€©ć±•ćș—æ·»çșç”œèČŒè»ąéĄ›ç‚čäŒæźżæŸ±ç”°é›»ć…Žćć ”ćĄ—ćŠŹć± ćŸ’æ–—æœæžĄç™»èŸèł­é€”éƒœéç „ç șćŠȘćșŠćœŸć„Žæ€’ć€’ć…šć†Źć‡ćˆ€ć”ćĄ”ćĄ˜ć„—ćź•ćł¶ć¶‹æ‚ŒæŠ•æ­æ±æĄƒæąŒæŁŸç›—æ·˜æčŻæ¶›çŻç‡ˆćœ“ç—˜ç„·ç­‰ç­”ç­’çł–ç”±ćˆ°"], -["c6a1","è‘Łè•©è—€èšŽèŹ„è±†èžé€ƒé€é™é™¶é ­éš°é—˜ćƒć‹•ćŒć ‚ć°Žæ†§æ’žæŽžçžłç«„èƒŽè„é“éŠ…ćł éŽ‡ćŒżćŸ—ćŸłæ¶œç‰čçŁçŠżçŻ€æŻ’ç‹ŹèȘ­æ ƒæ©Ąć‡žçȘæ€Žć±Šéł¶è‹«ćŻ…é…‰ç€žć™žć±Żæƒ‡æ•ŠæČŒè±šéé “ć‘‘æ›‡éˆć„ˆé‚Łć†…äčć‡Șè–™èŹŽç˜æșé‹æ„ąéŠŽçž„ç•·ć—æ„ è»Ÿé›Łæ±äșŒć°ŒćŒèż©ćŒ‚èł‘è‚‰è™čć»żæ—„äčłć…„"], -["c7a1","ćŠ‚ć°żéŸźä»»ćŠŠćżèȘæżĄçŠ°ç„ąćŻ§è‘±çŒ«ç†±ćčŽćż”捻撚燃çȘäčƒć»Œäč‹ćŸœćšąæ‚©æżƒçŽèƒœè„łè†żèŸČèŠ—èš€ć·ŽæŠŠæ’­èŠ‡æ·æłąæŽŸç¶ç Žć©†çœ”èŠ­éŠŹäżłć»ƒæ‹æŽ’æ•—æŻç›ƒç‰ŒèƒŒè‚șèŒ©é…ć€ćŸčćȘ’æą…æ„łç…€ç‹œèČ·ćŁČèł é™Șé€™èżç§€çŸ§è©äŒŻć‰„ćšæ‹æŸæłŠç™œçź”çČ•èˆ¶è–„èż«æ›æŒ çˆ†çž›èŽ«é§éșŠ"], -["c8a1","ć‡œçź±çĄČçźžè‚‡ç­ˆæ«šćčĄè‚Œç•‘畠慫鉹æșŒç™ș醗é«ȘäŒçœ°æŠœç­é–„éł©ć™șćĄ™è›€éšŒäŒŽćˆ€ćŠćć›ćž†æŹæ–‘æżæ°Ÿæ±Žç‰ˆçŠŻç­ç•”çčèˆŹè—©èČ©çŻ„é‡†ç…©é ’éŁŻæŒœæ™©ç•Șç›€çŁè•ƒè›źćŒȘ捑搩橃ćș‡ćœŒæ‚Č扉æ‰čæŠ«æ–æŻ”æłŒç–Čçšźçą‘ç§˜ç·‹çœ·è‚„èą«èȘčèČ»éżéžéŁ›æš‹ç°žć‚™ć°ŸćŸźæž‡æŻ˜ç”çœ‰çŸŽ"], -["c9a1","錻柊皗ćŒčç–‹é«­ćœŠè†è±è‚˜ćŒŒćż…ç•ąç­†é€ŒæĄ§ć§«ćȘ›çŽç™ŸèŹŹäż”ćœȘæš™æ°·æŒ‚ç“ąç„šèĄšè©•è±čć»Ÿæç—…ç§’è‹—éŒšé‹Čè’œè›­é°­ć“ćœŹæ–Œæ”œç€•èČ§èł“é »æ•ç“¶äžä»˜ćŸ ć€«ć©ŠćŻŒć†šćžƒćșœæ€–æ‰¶æ•·æ–§æ™źæ”źçˆ¶çŹŠè…è†šèŠ™è­œèČ èłŠè”Žé˜œé™„äŸźæ’«æ­Šèˆžè‘Ąè•Șéƒšć°æ„“éąšè‘șè•—äŒć‰ŻćŸ©ćč…æœ"], -["caa1","犏è…čè€‡èŠ†æ·”ćŒ—æ‰•æČžä»ç‰©éź’ćˆ†ć»ć™Žćąłæ†€æ‰źç„šć„źçČ‰çłžçŽ›é›°æ–‡èžäž™äœ”ć…”ćĄ€ćčŁćčłćŒŠæŸ„äžŠè”œé–‰é™›ç±łé ćƒ»ćŁç™–çą§ćˆ„çž„è”‘çź†ćć€‰ç‰‡çŻ‡ç·šèŸșèż”éäŸżć‹‰ćš©ćŒéž­äżèˆ—é‹Șćœƒæ•æ­©ç”«èŁœèŒ”ç©‚ć‹Ÿćą“æ…•æˆŠæšźæŻç°żè©ć€ŁäżžćŒ…ć‘†ć ±ć„‰ćźćł°ćłŻćŽ©ćș–抱捧攟æ–č朋"], -["cba1","æł•æłĄçƒčç Čçž«èƒžèŠłèŒè“Źèœ‚è€’èšȘè±Šé‚Šé‹’éŁœéłłé”ŹäčäșĄć‚ć‰–ćŠćŠšćžœćż˜ćż™æˆżæšŽæœ›æŸæŁ’ć†’çŽĄè‚Șè†šèŹ€èȌèČżé‰Ÿé˜Č搠頬挗惕捜汹æ’ČæœŽç‰§çŠç©†é‡Šć‹ƒæČĄæź†ć €ćčŒć„”æœŹçż»ć‡Ąç›†æ‘©çŁšé­”éș»ćŸ‹ćŠčæ˜§æžšæŻŽć“©æ§™ćč•膜枕éźȘæŸŸé±’æĄäșŠäżŁćˆæŠč末æČ«èż„䟭çč­éșżäž‡æ…ąæș€"], -["cca1","æŒ«è”“ć‘łæœȘé­…ć·łçź•ćČŹćŻ†èœœæčŠè“‘çš”è„ˆćŠ™çČæ°‘çœ ć‹™ć€ąç„Ąç‰ŸçŸ›éœ§é”Ąæ€‹ć©żćš˜ć†„ćć‘œæ˜Žç›Ÿèż·éŠ˜éłŽć§Șç‰æ»…ć…æŁ‰ç¶żç·Źéąéșșæ‘žæšĄèŒ‚ćŠ„ć­ŸæŻ›çŒ›ç›Čç¶Č耗蒙ć„Čæœšé»™ç›źæąć‹żé€…ć°€æˆ»ç±ŸèČ°ć•æ‚¶çŽ‹é–€ćŒäčŸć†¶ć€œçˆșè€¶é‡ŽćŒ„çŸąćŽ„ćœčçŽ„è–Źèšłèșé–æŸłè–źé‘“æ„‰æ„ˆæČč癒"], -["cda1","è«­èŒžć”Żäœ‘ć„Șć‹‡ć‹ćź„ćčœæ‚ æ†‚揖有柚æč§æ¶ŒçŒ¶çŒ·ç”±ç„èŁ•èȘ˜éŠé‚‘éƒ”é›„èžć€•äșˆäœ™äžŽèȘ‰èŒżé ć‚­ćčŒćŠ–ćźčćșžæšæș擁曜愊様掋æș¶ç†”甚çȘŻçŸŠè€€è‘‰è“‰èŠèŹĄèžŠé„é™œé€Šæ…ŸæŠ‘æŹČæČƒæ”ŽçżŒçżŒæ·€çŸ…èžșèŁžæ„èŽ±é Œé›·æŽ›ç”Ąèœé…Șäč±ć”ć”æŹ„æż«è—è˜­èŠ§ćˆ©ćć±„æŽæąšç†ç’ƒ"], -["cea1","ç—ąèŁèŁĄé‡Œé›ąé™žćŸ‹çŽ‡ç«‹è‘ŽæŽ ç•„ćŠ‰æ”æșœç‰ç•™çĄ«çČ’éš†ç«œéŸäŸ¶æ…źæ—…è™œäș†äșźćƒšäžĄć‡ŒćŻźæ–™æąæ¶ŒçŒŸç™‚çž­çšœçł§è‰Żè«’éŒé‡é™”é ˜ćŠ›ç·‘ć€«ćŽ˜æž—æ·‹ç‡çłè‡šèŒȘ隣鱗éșŸç‘ ćĄæ¶™çŽŻéĄžä»€äŒ¶äŸ‹ć†·ćŠ±ć¶ș怜çŽČ瀌苓鈎隷零霊éș—éœąæšŠæ­Žćˆ—ćŠŁçƒˆèŁ‚ć»‰æ‹æ†æŒŁç…‰ç°Ÿç·ŽèŻ"], -["cfa1","è“źé€ŁéŒŹć‘‚é­Żæ«“ç‚‰èł‚è·ŻéœČćŠŽć©ć»ŠćŒ„æœ—æ„ŒæŠ”æ”ȘæŒç‰ąç‹ŒçŻ­è€èŸè‹éƒŽć…­éș“犄肋éŒČè«–ć€­ć’Œè©±æ­Șèł„è„‡æƒ‘æž é·Čäș™äș˜é°è©«è—è•𿀀æčŸçą—è…•"], -["d0a1","ćŒŒäžäž•äžȘäž±äž¶äžŒäžżäč‚äč–äč˜äș‚äș…豫äșŠèˆ’ćŒäșŽäșžäșŸäș äșąäș°äșłäș¶ä»Žä»ä»„ä»†ä»‚ä»—ä»žä»­ä»Ÿä»·äŒ‰äœšäŒ°äœ›äœäœ—äœ‡äœ¶äŸˆäŸäŸ˜äœ»äœ©äœ°äŸ‘äœŻäŸ†äŸ–ć„˜äż”äżŸäżŽäż˜äż›äż‘äżšäżäż€äż„怚怹怔ć€Șć€„ć€…äŒœäż¶ć€Ąć€©ć€ŹäżŸäżŻć€‘ć€†ćƒć‡æœƒć•ććˆćšć–ćŹćžć‚€ć‚šć‚…ć‚Žć‚Č"], -["d1a1","ćƒ‰ćƒŠć‚łćƒ‚ćƒ–ćƒžćƒ„ćƒ­ćƒŁćƒźćƒčćƒ”ć„‰ć„ć„‚ć„–ć„•ć„”ć„šć„Ąć„șć„·ć„Œć„»ć„żć…€ć…’ć…Œć…”ć…ąç«žć…©ć…Șć…źć†€ć†‚ć›˜ć†Œć†‰ć†ć†‘ć†“ć†•ć†–ć†€ć†Šć†ąć†©ć†Ș憫憳憱ć†Čć†°ć†”ć†œć‡…ć‡‰ć‡›ć‡ è™•ć‡©ć‡­ć‡°ć‡”ć‡Ÿćˆ„ćˆ‹ćˆ”ćˆŽćˆ§ćˆȘ戟戳ćˆč扏扄手扌扞扔ć‰Șć‰Žć‰©ć‰łć‰żć‰œćŠćŠ”ćŠ’ć‰±ćŠˆćŠ‘èŸš"], -["d2a1","èŸ§ćŠŹćŠ­ćŠŒćŠ”ć‹ć‹ć‹—ć‹žć‹Łć‹ŠéŁ­ć‹ ć‹łć‹”ć‹žć‹čćŒ†ćŒˆç”žćŒćŒćŒćŒ•ćŒšćŒŁćŒŻćŒ±ćŒłćŒžć€ć†ć…äž—ć‰ćć‡–ćžć©ćźć€˜ć»ć·ćŽ‚ćŽ–ćŽ ćŽŠćŽ„ćŽźćŽ°ćŽ¶ćƒç°’é›™ćŸæ›Œç‡źćźćšć­ćșććœć‘€ćŹć­ćŒćźć¶ć©ćć‘Žć’ć‘”ć’Žć‘Ÿć‘±ć‘·ć‘°ć’’ć‘»ć’€ć‘¶ć’„ć’ć’†ć“‡ć’ąć’žć’„ć’Źć“„ć“ˆć’š"], -["d3a1","ć’«ć“‚ć’€ć’Ÿć’Œć“˜ć“„ć“Šć”ć””ć“œć“źć“­ć“ș擱ć”čć•€ć•Łć•Œć”źć•œć•…ć•–ć•—ć”žć”łć•ć–™ć–€ć’Żć–Šć–Ÿć•»ć•Ÿć–˜ć–žć–źć•Œć–ƒć–©ć–‡ć–šć—šć—…ć—Ÿć—„ć—œć—€ć—”ć˜”ć—·ć˜–ć—Ÿć—œć˜›ć—čć™Žć™ç‡Ÿć˜Žć˜¶ć˜Čć˜žć™«ć™€ć˜Żć™Źć™Șćš†ćš€ćšŠćš ćš”ćšćš„ćšźćš¶ćšŽć›‚ćšŒć›ć›ƒć›€ć›ˆć›Žć›‘ć›“ć›—ć›źć›č最替朄有"], -["d4a1","ćœˆćœ‹ćœćœ“ćœ˜ćœ–ć—‡ćœœćœŠćœ·ćœžćŽćœ»ć€ćć©ćŸ€ćžˆćĄćżćž‰ćž“ćž ćžłćž€ćžȘ枰柃柆柔柒染栊柖柣栋栙栝ćĄČć ĄćĄąćĄ‹ćĄ°æŻ€ćĄ’ć œćĄč汅ćąčćąŸćą«ćąșćŁžćą»ćąžćąźćŁ…ćŁ“ćŁ‘ćŁ—ćŁ™ćŁ˜ćŁ„ćŁœćŁ€ćŁŸćŁŻćŁșćŁčćŁ»ćŁŒćŁœć€‚ć€Šć€ć€›æąŠć€„ć€Źć€­ć€Čć€žć€Ÿç«’ć„•ć„ć„Žć„šć„˜ć„ąć„ ć„§ć„Źć„©"], -["d5a1","ć„žćŠćŠäœžäŸ«ćŠŁćŠČć§†ć§šć§œćŠć§™ć§šćš„ćšŸćš‘ćšœćš‰ćššć©€ć©Źć©‰ćš”ćš¶ć©ąć©ȘćȘšćȘŒćȘŸć«‹ć«‚ćȘœć«Łć«—櫊櫩櫖ć«șć«»ćŹŒćŹ‹ćŹ–ćŹČ櫐ćŹȘćŹ¶ćŹŸć­ƒć­…ć­€ć­‘ć­•ć­šć­›ć­„ć­©ć­°ć­łć­”ć­žæ–ˆć­șćź€ćźƒćźŠćźžćŻƒćŻ‡ćŻ‰ćŻ”ćŻćŻ€ćŻŠćŻąćŻžćŻ„ćŻ«ćŻ°ćŻ¶ćŻłć°…ć°‡ć°ˆć°ć°“ć° ć°ąć°šć°žć°č汁汆汎汓"], -["d6a1","ć±ć±ć­±ć±Źć±źäčąć±¶ć±čćȌćȑćȔ橛ćČ«ćČ»ćȶćČŒćČ·ćł…ćČŸćł‡ćł™ćł©ćłœćłșćł­ć¶ŒćłȘćŽ‹ćŽ•ćŽ—ć”œćŽŸćŽ›ćŽ‘ćŽ”ćŽąćŽšćŽ™ćŽ˜ć”Œć”’ć”Žć”‹ć”Źć”łć”¶ć¶‡ć¶„ć¶‚ć¶ąć¶ć¶Źć¶źć¶œć¶ć¶·ć¶Œć·‰ć·ć·“ć·’ć·–ć·›ć·«ć·Č淔枋枚枙枑枛架枷ćč„ćčƒćč€ćčŽćč—ćč”ćčŸćčąćč€ćč‡ćč”ćč¶ćčșéșŒćčżćș ć»ć»‚ć»ˆć»ć»"], -["d7a1","ć»–ć»Łć»ć»šć»›ć»ąć»Ąć»šć»©ć»Źć»±ć»łć»°ć»Žć»žć»ŸćŒƒćŒ‰ćœćœœćŒ‹ćŒ‘ćŒ–ćŒ©ćŒ­ćŒžćœćœˆćœŒćœŽćŒŻćœ‘ćœ–ćœ—ćœ™ćœĄćœ­ćœłćœ·ćŸƒćŸ‚ćœżćŸŠćŸˆćŸ‘ćŸ‡ćŸžćŸ™ćŸ˜ćŸ ćŸšćŸ­ćŸŒćż–ćż»ćż€ćżžćż±ćżæ‚łćżżæ€Ąæ æ€™æ€æ€©æ€Žæ€±æ€›æ€•æ€«æ€Šæ€æ€ș恚恁æȘæ·æŸæŠæ†ææŁæƒæ€æ‚æŹæ«æ™æ‚æ‚æƒ§æ‚ƒæ‚š"], -["d8a1","æ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒĄæ‚žæƒ æƒ“æ‚Žćż°æ‚œæƒ†æ‚”æƒ˜æ…æ„•æ„†æƒ¶æƒ·æ„€æƒŽæƒșæ„ƒæ„Ąæƒ»æƒ±æ„æ„Žæ…‡æ„Ÿæ„šæ„§æ…Šæ„żæ„Œæ„Źæ„Žæ„œæ…‚æ…„æ…łæ…·æ…˜æ…™æ…šæ…«æ…Žæ…Żæ…„æ…±æ…Ÿæ…æ…“æ…”æ†™æ†–æ†‡æ†Źæ†”æ†šæ†Šæ†‘æ†«æ†źæ‡Œæ‡Šæ‡‰æ‡·æ‡ˆæ‡ƒæ‡†æ†ș懋çœčæ‡æ‡Šæ‡Łæ‡¶æ‡șæ‡Žæ‡żæ‡œæ‡Œæ‡Ÿæˆ€æˆˆæˆ‰æˆæˆŒæˆ”æˆ›"], -["d9a1","æˆžæˆĄæˆȘæˆźæˆ°æˆČæˆłæ‰æ‰Žæ‰žæ‰Łæ‰›æ‰ æ‰šæ‰ŒæŠ‚æŠ‰æ‰ŸæŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹æ‹żæ‹†æ“”æ‹ˆæ‹œæ‹Œæ‹Šæ‹‚æ‹‡æŠ›æ‹‰æŒŒæ‹źæ‹±æŒ§æŒ‚æŒˆæ‹Żæ‹”ææŒŸææœææŽ–æŽŽæŽ€æŽ«æ¶æŽŁæŽæŽ‰æŽŸæŽ”æ«æ©æŽŸæ©æ€æ†æŁæ‰æ’æ¶æ„æ–æŽæ†æ“æŠæ¶æ”æ—æšææ‘§æ‘Żæ‘¶æ‘Žæ”Ș撕撓撄撩撈撌"], -["daa1","æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“ĄæŠŹæ“Łæ“Żæ”Źæ“¶æ“Žæ“Čæ“șæ”€æ“œæ”˜æ”œæ”…æ”€æ”Łæ”«æ”Žæ””æ”·æ”¶æ”žç•‹æ•ˆæ•–æ••æ•æ•˜æ•žæ•æ•Čæ•žæ–‚æ–ƒèźŠæ–›æ–Ÿæ–«æ–·æ—ƒæ—†æ—æ—„æ—Œæ—’æ—›æ—™æ— æ—Ąæ—±æČæ˜Šæ˜ƒæ—»æłæ˜”æ˜¶æ˜Žæ˜œæ™æ™„æ™‰æ™æ™žæ™æ™€æ™§æ™šæ™Ÿæ™ąæ™°æšƒæšˆæšŽæš‰æš„æš˜æšæ›æšč曉暟暌"], -["dba1","æ›„æšžæ›–æ›šæ› æ˜żæ›Šæ›©æ›°æ›”æ›·æœæœ–æœžæœŠæœ§éœžæœźæœżæœ¶ææœžæœ·æ†æžæ æ™æŁæ€æž‰æ°æž©æŒæȘæžŒæž‹æžŠæžĄæž…æž·æŸŻæžŽæŸŹæžłæŸ©æžžæŸ€æŸžæŸæŸąæŸźæžč柎柆柧æȘœæ žæĄ†æ ©æĄ€æĄæ ČæĄŽæąłæ «æĄ™æĄŁæĄ·æĄżæąŸæąæą­æą”æąæą›æąƒæȘźæąčæĄŽæą”æą æąșæ€æąæĄŸæ€æŁŠæ€ˆæŁ˜æ€ąæ€ŠæŁĄæ€ŒæŁ"], -["dca1","æŁ”æŁ§æŁ•æ€¶æ€’æ€„æŁ—æŁŁæ€„æŁčæŁ æŁŻæ€šæ€Șæ€šæ€Łæ€ĄæŁ†æ„čæ„·æ„œæ„žæ„«æ„”感æ„꿀迄޿€œæ„™æ€°æ„Ąæ„žæ„æŠæ„ȘæŠČæŠźæ§æŠżæ§æ§“æŠŸæ§ŽćŻšæ§Šæ§æŠ»æ§ƒæŠ§æšźæŠ‘æŠ æŠœæŠ•æŠŽæ§žæ§šæš‚æš›æ§żæŹŠæ§čæ§Čæ§§æš…æŠ±æšžæ§­æš”æ§«æšŠæš’æ«æšŁæš“æ©„æšŒæ©Čæš¶æ©žæ©‡æ©ąæ©™æ©Šæ©ˆæšžæšąæȘæȘæȘ æȘ„æȘąæȘŁ"], -["dda1","æȘ—蘗æȘ»æ«ƒæ«‚æȘžæȘłæȘŹæ«žæ«‘櫟æȘȘ櫚æ«Șæ«»æŹ…è˜–æ«șæŹ’æŹ–éŹ±æŹŸæŹžæŹ·ç›œæŹčéŁźæ­‡æ­ƒæ­‰æ­æ­™æ­”æ­›æ­Ÿæ­Ąæ­žæ­čæ­żæź€æź„æźƒæźæź˜æź•æźžæź€æźȘæź«æźŻæźČæź±æźłæź·æźŒæŻ†æŻ‹æŻ“æŻŸæŻŹæŻ«æŻłæŻŻéșŸæ°ˆæ°“æ°”æ°›æ°€æ°Łæ±žæ±•æ±ąæ±ȘæČ‚æČæČšæČæČ›æ±Ÿæ±šæ±łæČ’æČæł„æł±æł“æČœæł—æł…æłæČźæČ±æČŸ"], -["dea1","æČșæł›æłŻæł™æłȘæŽŸèĄæŽ¶æŽ«æŽœæŽžæŽ™æŽ”æŽłæŽ’æŽŒæ”Łæ¶“æ”€æ”šæ”čæ”™æ¶Žæ¶•æż€æ¶…æ·čæž•æžŠæ¶”æ·‡æ·Šæ¶žæ·†æ·Źæ·žæ·Œæ·šæ·’æ·…æ·ș淙淀淕æ·Șæ·źæž­æčźæžźæž™æčȿ蟿žŸæžŁæč«æž«æč¶æčæžŸæčƒæžșæčŽæž€æ»żæžæžžæș‚æșȘæș˜æ»‰æș·æ»“æșœæșŻæ»„æșČæ»”滕æșæș„滂æșŸæœæŒ‘çŒæ»Źæ»žæ»ŸæŒżæ»ČæŒ±æ»ŻæŒČ滌"], -["dfa1","挟挓滷柆æœșæœžæŸæŸ€æœŻæœ›æżłæœ­æŸ‚æœŒæœ˜æŸŽæŸ‘æż‚æœŠæŸłæŸŁæŸĄæŸ€æŸčæż†æŸȘæżŸæż•æżŹæż”æż˜æż±æżźæż›ç€‰ç€‹æżșç€‘ç€ç€æżŸç€›ç€šæœŽç€ç€˜ç€Ÿç€°ç€Ÿç€Čç‘çŁç‚™ç‚’ç‚Żçƒ±ç‚Źç‚žç‚łç‚źçƒŸçƒ‹çƒçƒ™ç„‰çƒœç„œç„™ç…„ç…•ç†ˆç…Šç…ąç…Œç…–ç…Źç†ç‡»ç†„ç†•ç†šç†Źç‡—ç†čç†Ÿç‡’ç‡‰ç‡”ç‡Žç‡ ç‡Źç‡§ç‡”ç‡Œ"], -["e0a1","ç‡č燿爍爐爛爹爭爬爰çˆČçˆ»çˆŒçˆżç‰€ç‰†ç‰‹ç‰˜ç‰Žç‰ŸçŠ‚çŠçŠ‡çŠ’çŠ–çŠąçŠ§çŠčçŠČ狃狆狄狎狒狱狠狡ç‹čç‹·ć€çŒ—çŒŠçŒœçŒ–çŒçŒŽçŒŻçŒ©çŒ„çŒŸçŽçé»˜ç—çȘ獚獰獞獔獻çșçˆçŽłçŽçŽ»ç€ç„çźçžç’ąç…ç‘Żç„çžçČçșç‘•çżç‘Ÿç‘™ç‘ç‘œç‘©ç‘°ç‘Łç‘Ș瑶瑟璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓟ç“Čç“°ç“±ç“žç“·ç”„ç”ƒç”…ç”Œç”Žç”ç”•ç”“ç”žç”Šç”Źç”Œç•„ç•ç•Šç•‰ç•›ç•†ç•šç•©ç•€ç•§ç•«ç•­ç•žç•¶ç–†ç–‡ç•Žç–Šç–‰ç–‚ç–”ç–šç–ç–„ç–Łç—‚ç–łç—ƒç–”ç–œç–žç–Œç–±ç—ç—Šç—’ç—™ç—Łç—žç—Ÿç—żç—Œç˜ç—°ç—șç—Čç—łç˜‹ç˜ç˜‰ç˜Ÿç˜§ç˜ ç˜Ąç˜ąç˜€ç˜Žç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™Ąç™ąç™šç™©ç™Ș癧癬癰"], -["e2a1","ç™Č癶癞癌皀皃皈皋皎皖皓皙皚皰皎皞çščçšșç›‚ç›ç›–ç›’ç›žç›Ąç›„ç›§ç›Șè˜Żç›»çœˆçœ‡çœ„çœ©çœ€çœžçœ„çœŠçœ›çœ·çœžç‡çšçšç«ç›ç„çżçŸçč瞎瞋瞑瞠瞞瞰瞶çžčçžżçžŒçžœçž»çŸ‡çŸçŸ—çŸšçŸœçŸŁçŸźçŸŒç Œç ’ç€Šç  ç€ȘçĄ…çąŽçĄŽçą†çĄŒçąšçąŒçąŁçą”çąȘçąŻçŁ‘çŁ†çŁ‹çŁ”çąŸçąŒçŁ…çŁŠçŁŹ"], -["e3a1","çŁ§çŁšçŁœçŁŽç€‡ç€’ç€‘ç€™ç€Źç€«ç„€ç„ ç„—ç„Ÿç„šç„•ç„“ç„șç„żçŠŠçŠçŠ§éœ‹çŠȘ犟犳çŠčçŠșç§‰ç§•ç§§ç§Źç§Ąç§Łçšˆçšçš˜çš™çš çšŸçŠ€çš±çš»çšŸçš·ç©ƒç©—ç©‰ç©Ąç©ąç©©éŸç©°ç©č穜çȘˆçȘ—çȘ•çȘ˜çȘ–çȘ©ç«ˆçȘ°çȘ¶ç«…ç«„çȘżé‚ƒç«‡ç«Šç«ç«ç«•ç«“ç«™ç«šç«ç«Ąç«ąç«Šç«­ç«°çŹ‚çŹçŹŠçŹ†çŹłçŹ˜çŹ™çŹžçŹ”çŹšçŹ¶ç­"], -["e4a1","ç­șçŹ„ç­çŹ‹ç­Œç­…ç­”ç­„ç­Žç­§ç­°ç­±ç­Źç­źçźçź˜çźŸçźçźœçźšçź‹çź’çźç­çź™çŻ‹çŻçŻŒçŻçźŽçŻ†çŻçŻ©ç°‘ç°”çŻŠçŻ„ç± ç°€ç°‡ç°“çŻłçŻ·ç°—ç°çŻ¶ç°Łç°§ç°Șç°Ÿç°·ç°«ç°œç±Œç±ƒç±”ç±ç±€ç±ç±˜ç±Ÿç±€ç±–ç±„ç±Źç±”çȃçȐçČ€çČ­çČąçČ«çČĄçČšçČłçČČçȱçČźçČčçČœçł€çł…çł‚çł˜çł’çłœçłąéŹ»çłŻçłČ糎糶çłș箆"], -["e5a1","çŽ‚çŽœçŽ•çŽŠç”…ç”‹çŽźçŽČ玿玔甆申甖甎ç”Čç”šç”źç”ç”Łç¶“ç¶‰ç”›ç¶ç”œç¶›ç¶șç¶źç¶Łç¶”ç·‡ç¶œç¶«çžœç¶ąç¶Żç·œç¶žç¶Ÿç¶°ç·˜ç·ç·€ç·žç·»ç·Čç·Ąçž…çžŠçžŁçžĄçž’çž±çžŸçž‰çž‹çžąçč†çčŠçž»çž”çžčçčƒçž·çžČçžșçč§çčçč–çčžçč™çčšçččçčȘçč©çčŒçč»çșƒç·•çčœèŸźçčżçșˆçș‰çșŒçș’çșçș“çș”çș–çșŽçș›çșœçŒžçŒș"], -["e6a1","çœ…çœŒçœçœŽçœçœ‘çœ•çœ”çœ˜çœŸçœ çœšçœ©çœ§çœžçŸ‚çŸ†çŸƒçŸˆçŸ‡çŸŒçŸ”çŸžçŸçŸšçŸŁçŸŻçŸČçŸčçŸźçŸ¶çŸžè­±çż…çż†çżŠçż•çż”çżĄçżŠçż©çżłçżčéŁœè€†è€„è€‹è€’è€˜è€™è€œè€Ąè€šè€żè€»èŠè†è’è˜èšèŸèąèšèłèČ聰聶èčèœèżè‚„è‚†è‚…è‚›è‚“è‚šè‚­ć†è‚Źèƒ›èƒ„èƒ™èƒèƒ„èƒšèƒ–è„‰èƒŻèƒ±è„›è„©è„Łè„Żè…‹"], -["e7a1","éš‹è…†è„Ÿè…“è…‘èƒŒè…±è…źè…„è…Šè…Žè†ƒè†ˆè†Šè†€è†‚è† è†•è†€è†Łè…Ÿè†“è†©è†°è†”è†Ÿè†žè†œè‡€è‡‚è†ș臉臍臑臙臘臈臚臟臠臧è‡șè‡»è‡Ÿèˆèˆ‚èˆ…èˆ‡èˆŠèˆèˆèˆ–èˆ©èˆ«èˆžèˆłè‰€è‰™è‰˜è‰è‰šè‰Ÿè‰€è‰ąè‰šè‰Șè‰«èˆźè‰±è‰·è‰žè‰ŸèŠèŠ’èŠ«èŠŸèŠ»èŠŹè‹Ąè‹Łè‹Ÿè‹’è‹Žè‹łè‹ș莓范苻è‹č苞茆苜茉苙"], -["e8a1","茔茎茖èŒČ茱荀èŒčèè…èŒŻèŒ«èŒ—èŒ˜èŽ…èŽšèŽȘèŽŸèŽąèŽ–èŒŁèŽŽèŽ‡èŽŠèŒèŽ”èłè”èŽ èŽ‰èŽšèŽè“è«èŽèœèƒè˜è‹èè·è‡è èČèèąè èŽœèžè”†è»è‘­èȘèŒè•šè’„è‘·è‘«è’­è‘źè’‚è‘©è‘†èŹè‘Żè‘čè”è“Šè‘ąè’čè’żè’Ÿè“™è“è’»è“šè“è“è“†è“–è’Ąè”Ąè“żè“Žè”—è”˜è”Źè”Ÿè”•è””è“Œè•€è•Łè•˜è•ˆ"], -["e9a1","蕁蘂蕋蕕薀薀薈薑薊薚蕭薔薛è—Ș薇薜蕷蕟薐藉è–ș藏è–č藐藕藝藄藜è—č蘊蘓蘋藟è—șè˜†è˜ąè˜šè˜°è˜żè™äč•è™”è™Ÿè™§è™±èš“èšŁèš©èšȘèš‹èšŒèš¶èšŻè›„è›†èš°è›‰è Łèš«è›”è›žè›©è›Źè›Ÿè››è›Żèœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœè›čèœŠèœŽèœżèœ·èœ»èœ„èœ©èœšè èŸèžèŒèŽèŽè—èšèźè™"], -["eaa1","è“èŁèȘè …èžąèžŸèž‚èžŻèŸ‹èžœèŸ€èŸé›–èž«èŸ„èžłèŸ‡èŸ†èž»èŸŻèŸČèŸ è è èŸŸèŸ¶èŸ·è ŽèŸ’è ‘è –è •è ąè Ąè ±è ¶è čè §è »èĄ„èĄ‚èĄ’èĄ™èĄžèĄąèĄ«èąèĄŸèąžèĄ”èĄœèą”èĄČèą‚èą—èą’èąźèą™èąąèąèą€èą°èążèą±èŁƒèŁ„èŁ”èŁ˜èŁ™èŁèŁčè€‚èŁŒèŁŽèŁšèŁČ耄而耊耓脃耞耄è€Ș耫脁脄耻耶耞脌耝脠脞"], -["eba1","脊脀脭è„Șè„Żè„Žè„·è„ŸèŠƒèŠˆèŠŠèŠ“èŠ˜èŠĄèŠ©èŠŠèŠŹèŠŻèŠČèŠșèŠœèŠżè§€è§šè§œè§è§§è§Žè§žèšƒèš–èšèšŒèš›èšèš„èš¶è©è©›è©’è©†è©ˆè©Œè©­è©Źè©ąèȘ…èȘ‚èȘ„èȘšèȘĄèȘ‘èȘ„èȘŠèȘšèȘŁè«„è«è«‚è«šè««è«łè«§è«€è«±èŹ”è« è«ąè«·è«žè«›èŹŒèŹ‡èŹšè«ĄèŹ–èŹèŹ—èŹ èŹłéž«èŹŠèŹ«èŹŸèŹšè­è­Œè­è­Žè­‰è­–è­›è­šè­«"], -["eca1","è­Ÿè­Źè­Żè­Žè­œèź€èźŒèźŽèź’èź“èź–èź™èźšè°șè±è°żè±ˆè±Œè±Žè±è±•è±ąè±Źè±žè±șèȂèȉèȅèȊèȍèȎèČ”è±ŒèČ˜æˆèČ­èČȘèČœèČČèČłèČźèČ¶èłˆèłèł€èłŁèłšèłœèłșèł»èŽ„èŽ…èŽŠèŽ‡èŽèŽèŽéœŽèŽ“èłèŽ”èŽ–è”§è”­è”±è”łè¶è¶™è·‚è¶Ÿè¶ș跏跚跖跌跛跋è·Șè·«è·Ÿè·Łè·Œèžˆèž‰è·żèžèžžèžèžŸèč‚èž”螰螎èčŠ"], -["eda1","èč‡èč‰èčŒèčèčˆèč™èč€èč èžȘèčŁèč•èč¶èčČèčŒèșèș‡èș…èș„èș‹èșŠèș“èș‘èș”èș™èșȘèșĄèșŹèș°è»†èș±èșŸè»…è»ˆè»‹è»›è»Łè»Œè»»è»«è»ŸèŒŠèŒ…èŒ•èŒ’èŒ™èŒ“èŒœèŒŸèŒ›èŒŒèŒŠèŒłèŒ»èŒčèœ…èœ‚èŒŸèœŒèœ‰èœ†èœŽèœ—èœœèœąèœŁèœ€èŸœèŸŸèŸŁèŸ­èŸŻèŸ·èżšèż„èżąèżȘèżŻé‚‡èżŽé€…èżčèżșé€‘é€•é€Ąé€é€žé€–é€‹é€§é€¶é€”é€čèżž"], -["eea1","ééé‘é’é€Žé‰é€Ÿé–é˜éžéšéŻé¶éššéČé‚‚éœé‚é‚€é‚Šé‚‰é‚é‚šé‚Żé‚±é‚”éƒąéƒ€æ‰ˆéƒ›é„‚é„’é„™é„Čé„°é…Šé…–é…˜é…Łé…„é…©é…łé…Č醋醉醂醹醫醯é†Ș醔醎é†șé‡€é‡é‡‰é‡‹é‡é‡–é‡Ÿé‡Ąé‡›é‡Œé‡”é‡¶éˆžé‡żéˆ”éˆŹéˆ•éˆ‘é‰žé‰—é‰…é‰‰é‰€é‰ˆéŠ•éˆżé‰‹é‰éŠœéŠ–éŠ“éŠ›é‰šé‹éŠč銷鋩錏é‹ș鍄錼"], -["efa1","錙錱錚錣éŒșéŒ”éŒ»éœé éŒéźé–éŽ°éŽŹéŽ­éŽ”éŽčé–é—éšé„é˜éƒéééˆé€éšé”é“éƒé‡éé¶é«é”éĄéș鑁鑒鑄鑛鑠鑱鑞é‘Șéˆ©é‘°é‘”é‘·é‘œé‘šé‘Œé‘Ÿé’é‘żé–‚é–‡é–Šé–”é––é–˜é–™é– é–šé–§é–­é–Œé–»é–čé–Ÿé—Šæż¶é—ƒé—é—Œé—•é—”é—–é—œé—Ąé—„é—ąé˜Ąé˜šé˜źé˜Żé™‚é™Œé™é™‹é™·é™œé™ž"], -["f0a1","陝陟险é™Č陬隍隘隕隗éšȘ隧隱éšČ隰階隶隞éšč雎雋雉雍脍雜霍雕é›č霄霆霈霓霎霑霏霖霙需éœȘ霰éœčéœœéœŸé„é†éˆé‚é‰éœé é€éŠéšć‹’é«é±éč鞅靌鞁éșéž†éž‹éžéžéžœéžšéžŠéžŁéžłéžŽéŸƒéŸ†éŸˆéŸ‹éŸœéŸ­éœéŸČç«ŸéŸ¶éŸ”é é Œé žé €é Ąé ·é œéĄ†éĄéĄ‹éĄ«éĄŻéĄ°"], -["f1a1","饱饎饳éąȘéąŻéą±éą¶éŁ„éŁƒéŁ†éŁ©éŁ«é€ƒé€‰é€’é€”é€˜é€Ąé€é€žé€€é€ é€Źé€źé€œé€Ÿé„‚é„‰é„…é„é„‹é„‘é„’é„Œé„•éŠ—éŠ˜éŠ„éŠ­éŠźéŠŒé§Ÿé§›é§é§˜é§‘é§­é§źé§±é§Čé§»é§žéšéšéš…é§ąéš™éš«éš·é©…é©‚é©€é©ƒéšŸé©•é©é©›é©—é©Ÿé©ąé©„é©€é©©é©«é©ȘéȘ­éȘ°éȘŒé«€é«é«‘é«“é«”é«žé«Ÿé«ąé«Łé«Šé«Żé««é«źé«Žé«±é«·"], -["f2a1","é«»éŹ†éŹ˜éŹšéŹŸéŹąéŹŁéŹ„éŹ§éŹšéŹ©éŹȘ鏟鏯éŹČ魄魃魏魍魎魑魘魮鼓鼃鼑鼖鼗鼟鼠鼹鼮鯀鯊éźčéŻ†éŻéŻ‘éŻ’éŻŁéŻąéŻ€éŻ”éŻĄé°șéŻČéŻ±éŻ°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°źé°›é°„é°€é°Ąé°°é±‡é°Čé±†é°Ÿé±šé± é±§é±¶é±žéł§éłŹéł°éŽ‰éŽˆéł«éŽƒéŽ†éŽȘéŽŠé¶ŻéŽŁéŽŸé”„éŽ•éŽ’é”éŽżéŽŸé”†é”ˆ"], -["f3a1","锝锞销锑锐错é”Č鶉鶇鶫锯é”ș鶚鶀鶩é¶Č鷄鷁鶻鶞é¶șé·†é·é·‚é·™é·“é·žé·Šé·­é·Żé·œéžšéž›éžžéč”éččéčœéșéșˆéș‹éșŒéș’éș•éș‘éșéș„éș©éșžéșȘéș­éĄé»Œé»Žé»é»é»”黜點黝黠黄黚黯黎黶黷é»čé»»é»Œé»œéŒ‡éŒˆçš·éŒ•éŒĄéŒŹéŒŸéœŠéœ’éœ”éœŁéœŸéœ éœĄéœŠéœ§éœŹéœȘ霷éœČ霶韕韜韠"], -["f4a1","ć Żæ§‡é™ç‘€ć‡œç†™"], -["f9a1","çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Šć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïšïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·"], -["faa1","ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Żæ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±"], -["fba1","çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄșç€°ïš˜ïš™ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡š"], -["fca1","é‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™é«œé­”é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"], -["fcf1","ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚"], -["8fa2af","Ë˜Ë‡ÂžË™ËÂŻË›ËšïœžÎ„Î…"], -["8fa2c2","¥Š¿"], -["8fa2eb","ÂșÂȘ©Ÿℹ€№"], -["8fa6e1","ΆΈΉΊÎȘ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","ÎŹÎ­ÎźÎŻÏŠÎÏŒÏ‚ÏÏ‹Î°ÏŽ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","ÄŠ"], -["8fa9a6","ÄČ"], -["8fa9a8","ƁĿ"], -["8fa9ab","Ɗ؃"], -["8fa9af","ƩÞ"], -["8fa9c1","ĂŠÄ‘Ă°Ä§Ä±ÄłÄžĆ‚Ć€Ć‰Ć‹ĂžĆ“ĂŸĆ§ĂŸ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ÄœÄžÄąÄ Ä€ĂĂŒĂĂŽÇÄ°ÄȘğĚĎĶÄčÄœÄ»ĆƒĆ‡Ć…Ă‘Ă“Ă’Ă–Ă”Ç‘ĆĆŒĂ•Ć”Ć˜Ć–ĆšĆœĆ ĆžĆ€ĆąĂšĂ™ĂœĂ›ĆŹÇ“Ć°ĆȘĆČĆźĆšÇ—Ç›Ç™Ç•ĆŽĂĆžĆ¶ĆčĆœĆ»"], -["8faba1","ĂĄĂ Ă€ĂąÄƒÇŽÄÄ…Ă„ĂŁÄ‡Ä‰ÄĂ§Ä‹ÄĂ©ĂšĂ«ĂȘěėēęǔĝğ"], -["8fabbd","ĥĄíÏïßǐ"], -["8fabc5","īįĩĔķÄșÄŸÄŒĆ„ĆˆĆ†Ă±ĂłĂČĂ¶ĂŽÇ’Ć‘ĆĂ”Ć•Ć™Ć—Ć›ĆĆĄĆŸĆ„ĆŁĂșĂčĂŒĂ»Ć­Ç”Ć±Ć«ĆłĆŻĆ©Ç˜ÇœÇšÇ–Ć”ĂœĂżĆ·ĆșĆŸĆŒ"], -["8fb0a1","äž‚äž„äž…äžŒäž’äžŸäžŁäž€äžšäž«äžźäžŻäž°äž”äč€äčäč„äč‡äč‘äčšäčœäčŁäčšäč©äčŽäč”äččäčżäșäș–äș—äșäșŻäșčä»ƒä»ä»šä»›ä» ä»Ąä»ąä»šä»Żä»±ä»łä»”ä»œä»Ÿä»żäŒ€äŒ‚äŒƒäŒˆäŒ‹äŒŒäŒ’äŒ•äŒ–äŒ—äŒ™äŒźäŒ±äœ äŒłäŒ”äŒ·äŒčäŒ»äŒŸäœ€äœ‚äœˆäœ‰äœ‹äœŒäœ’äœ”äœ–äœ˜äœŸäœŁäœȘäœŹäœźäœ±äœ·äœžäœčäœș䜜䜟䟁䟂䟄"], -["8fb1a1","䟅䟉䟊䟌䟎䟐䟒䟓䟔䟗䟙䟚䟞䟟äŸČ䟷äŸčäŸ»äŸŒäŸœäŸŸäż€äżäż…äż†äżˆäż‰äż‹äżŒäżäżäż’äżœäż äżąäż°äżČäżŒäżœäżżć€€ć€ć€„ć€‡ć€Šć€Œć€Žć€ć€“ć€—ć€˜ć€›ć€œć€ć€žć€ąć€§ć€źć€°ć€Čć€łć€”ć€ćć‚ć…ć†ćŠćŒćŽć‘ć’ć“ć—ć™ćŸć ćąćŁćŠć§ćȘć­ć°ć±ć€»ć‚ć‚ƒć‚„ć‚†ć‚Šć‚Žć‚ć‚"], -["8fb2a1","悒悓悔悖悛悜悞",4,"ć‚Ș悯悰ć‚čć‚șć‚œćƒ€ćƒƒćƒ„ćƒ‡ćƒŒćƒŽćƒćƒ“ćƒ”ćƒ˜ćƒœćƒćƒŸćƒąćƒ€ćƒŠćƒšćƒ©ćƒŻćƒ±ćƒ¶ćƒșćƒŸć„ƒć„†ć„‡ć„ˆć„‹ć„Œć„ć„ŽćƒČć„ć„—ć„™ć„›ć„œć„ć„žć„Łć„§ć„šć„Źć„­ć„Żć„±ć„łć„Žć„”ć„žć„čć…‚ć…Šć…ć…“ć…•ć…—ć…˜ć…Ÿć…€ć…Šć…Ÿć†ƒć†„ć†‹ć†Žć†˜ć†ć†Ąć†Łć†­ć†žć†șć†Œć†Ÿć†żć‡‚"], -["8fb3a1","ć‡ˆć‡ć‡‘ć‡’ć‡“ć‡•ć‡˜ć‡žć‡ąć‡„ć‡źć‡Čć‡łć‡Žć‡·ćˆćˆ‚ćˆ…ćˆ’ćˆ“ćˆ•ćˆ–ćˆ˜ćˆąćˆšćˆ±ćˆČćˆ”ćˆŒć‰…ć‰‰ć‰•ć‰—ć‰˜ć‰šć‰œć‰Ÿć‰ ć‰Ąć‰Šć‰źć‰·ć‰žć‰čćŠ€ćŠ‚ćŠ…ćŠŠćŠŒćŠ“ćŠ•ćŠ–ćŠ—ćŠ˜ćŠšćŠœćŠ€ćŠ„ćŠŠćŠ§ćŠŻćŠ°ćŠ¶ćŠ·ćŠžćŠșćŠ»ćŠœć‹€ć‹„ć‹†ć‹ˆć‹Œć‹ć‹‘ć‹”ć‹–ć‹›ć‹œć‹Ąć‹„ć‹šć‹©ć‹Șć‹Źć‹°ć‹±ć‹Žć‹¶ć‹·ćŒ€ćŒƒćŒŠćŒ‹"], -["8fb4a1","ćŒŒćŒ‘ćŒ“ćŒ˜ćŒ›ćŒœćŒžćŒŸćŒ„ćŒ§ćŒšćŒ©ćŒ«ćŒŹćŒ­ćŒ°ćŒČćŒ”ćŒŒćŒœćŒŸć‚ćŒć‹ć™ć›ćĄćŁć„ćŹć­ćČćčćŸćŽƒćŽ‡ćŽˆćŽŽćŽ“ćŽ”ćŽ™ćŽćŽĄćŽ€ćŽȘ掫掯ćŽČ掎掔掷掞ćŽșćŽœć€ć…ćć’ć“ć•ćšććžć ćŠć§ć”ć‚ć“ćšćĄć§ćšćȘćŻć±ćŽć”ć‘ƒć‘„ć‘‡ć‘ć‘ć‘žć‘ąć‘€ć‘Šć‘§ć‘©ć‘«ć‘­ć‘źć‘Žć‘ż"], -["8fb5a1","ć’ć’ƒć’…ć’ˆć’‰ć’ć’‘ć’•ć’–ć’œć’Ÿć’Ąć’Šć’§ć’©ć’Ș播撟撱撷ć’čć’șć’»ć’żć“†ć“Šć“ć“Žć“ ć“Șć“Źć“Żć“¶ć“Œć“Ÿć“żć”€ć”ć”…ć”ˆć”‰ć”Œć”ć”Žć”•ć”Ș攫ć”Čć””ć”¶ć”»ć”Œć”œć•ć•‡ć•‰ć•Šć•ć•ć•‘ć•˜ć•šć•›ć•žć• ć•Ąć•€ć•Šć•żć–ć–‚ć–†ć–ˆć–Žć–ć–‘ć–’ć–“ć–”ć–—ć–Łć–€ć–­ć–Č斿旁旃旆旉旋旌旎旑旒"], -["8fb6a1","ć—“ć——ć—˜ć—›ć—žć—ąć—©ć—¶ć—żć˜…ć˜ˆć˜Šć˜",5,"ć˜™ć˜Źć˜°ć˜łć˜”ć˜·ć˜čć˜»ć˜Œć˜œć˜żć™€ć™ć™ƒć™„ć™†ć™‰ć™‹ć™ć™ć™”ć™žć™ ć™Ąć™ąć™Łć™Šć™©ć™­ć™Żć™±ć™Čć™”ćš„ćš…ćšˆćš‹ćšŒćš•ćš™ćššćšćšžćšŸćšŠćš§ćššćš©ćš«ćšŹćš­ćš±ćšłćš·ćšŸć›…ć›‰ć›Šć›‹ć›ć›ć›Œć›ć›™ć›œć›ć›Ÿć›Ąć›€",4,"曱曫曭"], -["8fb7a1","ć›¶ć›·ćœćœ‚ćœ‡ćœŠćœŒćœ‘ćœ•ćœšćœ›ćœćœ ćœąćœŁćœ€ćœ„ćœ©ćœȘćœŹćœźćœŻćœłćœŽćœœćœŸćœżć…ć†ćŒćć’ćąć„ć§ćšć«ć­",4,"ćłćŽć”ć·ćčćșć»ćŒćŸćžćžƒćžŒćž”ćž—ćž™ćžšćžœćžćžžćžŸćžĄćž•ćž§ćžšćž©ćžŹćžžćžœćŸ‡ćŸˆćŸŒćŸćŸ•ćŸćŸžćŸ€ćŸŠćŸ§ćŸ©ćŸ­ćŸ°ćŸ”ćŸ¶ćŸžćŸœćŸŸćŸżć ƒć „ć ˆć ‰ćŸĄ"], -["8fb8a1","栌栍栛栞栟栠栩栧栭ć Čć čć żćĄ‰ćĄŒćĄćĄćĄćĄ•ćĄŸćĄĄćĄ€ćĄ§ćĄšćĄžćĄŒćĄżćą€ćąćą‡ćąˆćą‰ćąŠćąŒćąćąćąćą”ćą–ćąćą ćąĄćąąćąŠćą©ćą±ćąČćŁ„ćąŒćŁ‚ćŁˆćŁćŁŽćŁćŁ’ćŁ”ćŁ–ćŁšćŁćŁĄćŁąćŁ©ćŁłć€…ć€†ć€‹ć€Œć€’ć€“ć€”è™ć€ć€Ąć€Łć€€ć€šć€Żć€°ć€łć€”ć€¶ć€żć„ƒć„†ć„’ć„“ć„™ć„›ć„ć„žć„Ÿć„Ąć„Łć„«ć„­"], -["8fb9a1","愯ć„Č愔愶ć„čć„»ć„ŒćŠ‹ćŠŒćŠŽćŠ’ćŠ•ćŠ—ćŠŸćŠ€ćŠ§ćŠ­ćŠźćŠŻćŠ°ćŠłćŠ·ćŠșćŠŒć§ć§ƒć§„ć§ˆć§Šć§ć§’ć§ć§žć§Ÿć§Łć§€ć§§ć§źć§Żć§±ć§Čć§Žć§·ćš€ćš„ćšŒćšćšŽćš’ćš“ćšžćšŁćš€ćš§ćššćšȘćš­ćš°ć©„ć©…ć©‡ć©ˆć©Œć©ć©•ć©žć©Łć©„ć©§ć©­ć©·ć©șć©»ć©ŸćȘ‹ćȘćȘ“ćȘ–ćȘ™ćȘœćȘžćȘŸćȘ ćȘąćȘ§ćȘŹćȘ±ćȘČćȘłćȘ”ćȘžćȘșćȘ»ćȘż"], -["8fbaa1","ć«„ć«†ć«ˆć«ć«šć«œć« ć«„ć«Șć«źć«”ć«¶ć«œćŹ€ćŹćŹˆćŹ—ćŹŽćŹ™ćŹ›ćŹćŹĄćŹ„ćŹ­ćŹžć­ć­‹ć­Œć­’ć­–ć­žć­šć­źć­Żć­Œć­œć­Ÿć­żćźćź„ćź†ćźŠćźŽćźćź‘ćź“ćź”ćź–ćźšćź©ćźŹćź­ćźŻćź±ćźČćź·ćźșćźŒćŻ€ćŻćŻćŻćŻ–",4,"ćŻ ćŻŻćŻ±ćŻŽćŻœć°Œć°—ć°žć°Ÿć°Łć°Šć°©ć°«ć°Źć°źć°°ć°Čć°”ć°¶ć±™ć±šć±œć±ąć±Łć±§ć±šć±©"], -["8fbba1","汭汰汎汔ć±șć±»ć±Œć±œćȇćȈćȊćȏćȒćȝćȟćČ ćČąćČŁćČŠćČȘćČČćČŽćČ”ćČșćł‰ćł‹ćł’ćłćł—ćłźćł±ćłČćłŽćŽćŽ†ćŽćŽ’ćŽ«ćŽŁćŽ€ćŽŠćŽ§ćŽ±ćŽŽćŽčćŽœćŽżć”‚ć”ƒć”†ć”ˆć”•ć”‘ć”™ć”Šć”Ÿć” ć”Ąć”ąć”€ć”Șć”­ć”°ć”čć”șć”Ÿć”żć¶ć¶ƒć¶ˆć¶Šć¶’ć¶“ć¶”ć¶•ć¶™ć¶›ć¶Ÿć¶ ć¶§ć¶«ć¶°ć¶Žć¶žć¶čć·ƒć·‡ć·‹ć·ć·Žć·˜ć·™ć· ć·€"], -["8fbca1","ć·©ć·žć·č澀澇澍澒澔澕澘澟澠澼澹ćžČćž”ćžŸćč‹ćčćč‰ćč‘ćč–ćč˜ćč›ćčœćčžćčšćčȘ",4,"ćč°ćș€ćș‹ćșŽćșąćș€ćș„ćșšćșȘćșŹćș±ćșłćșœćșŸćșżć»†ć»Œć»‹ć»Žć»‘ć»’ć»”ć»•ć»œć»žć»„ć»«ćŒ‚ćŒ†ćŒ‡ćŒˆćŒŽćŒ™ćŒœćŒćŒĄćŒąćŒŁćŒ€ćŒšćŒ«ćŒŹćŒźćŒ°ćŒŽćŒ¶ćŒ»ćŒœćŒżćœ€ćœ„ćœ…ćœ‡ćœćœćœ”ćœ˜ćœ›ćœ ćœŁćœ€ćœ§"], -["8fbda1","ćœŻćœČćœŽćœ”ćœžćœșćœœćœŸćŸ‰ćŸćŸćŸ–ćŸœćŸćŸąćŸ§ćŸ«ćŸ€ćŸŹćŸŻćŸ°ćŸ±ćŸžćż„ćż‡ćżˆćż‰ćż‹ćż",4,"濞濥濹濚濩ćżȘ濏濭濟濯ćżČćżłćż¶ćżșćżŒæ€‡æ€Šæ€æ€“æ€”æ€—æ€˜æ€šæ€Ÿæ€€æ€­æ€łæ€”æ€æ‡æˆæ‰æŒæ‘æ”æ–æ—ææĄæ§æ±æŸæżæ‚‚æ‚†æ‚ˆæ‚Šæ‚Žæ‚‘æ‚“æ‚•æ‚˜æ‚æ‚žæ‚ąæ‚€æ‚„æ‚šæ‚°æ‚±æ‚·"], -["8fbea1","æ‚»æ‚Ÿæƒ‚æƒ„æƒˆæƒ‰æƒŠæƒ‹æƒŽæƒæƒ”æƒ•æƒ™æƒ›æƒæƒžæƒąæƒ„æƒČ惔惞惌惜愂愇愊愌愐",4,"æ„–æ„—æ„™æ„œæ„žæ„ąæ„Ș愫愰愱愔愶愷æ„čæ…æ……æ…†æ…‰æ…žæ… æ…Źæ…Čæ…žæ…»æ…Œæ…żæ†€æ†æ†ƒæ†„憋憍憒憓憗憘憜憝憟憠憄憚æ†Ș憭憞æ†čæ†Œæ‡€æ‡æ‡‚æ‡Žæ‡æ‡•æ‡œæ‡æ‡žæ‡Ÿæ‡Ąæ‡ąæ‡§æ‡©æ‡„"], -["8fbfa1","æ‡Źæ‡­æ‡Żæˆæˆƒæˆ„æˆ‡æˆ“æˆ•æˆœæˆ æˆąæˆŁæˆ§æˆ©æˆ«æˆčæˆœæ‰‚æ‰ƒæ‰„æ‰†æ‰Œæ‰æ‰‘æ‰’æ‰”æ‰–æ‰šæ‰œæ‰€æ‰­æ‰Żæ‰łæ‰șæ‰œæŠæŠŽæŠæŠæŠŠæŠšæŠłæŠ¶æŠ·æŠșæŠŸæŠżæ‹„æ‹Žæ‹•æ‹–æ‹šæ‹Șæ‹Č拎拌拜挃挄挊挋挍挐挓挖挘挩æŒȘ挭挔挶æŒčæŒŒææ‚æƒæ„æ†æŠæ‹æŽæ’æ“æ”æ˜æ›æ„æŠæŹæ­æ±æŽæ”"], -["8fc0a1","æžæŒæœæżæŽ‚æŽ„æŽ‡æŽŠæŽæŽ”æŽ•æŽ™æŽšæŽžæŽ€æŽŠæŽ­æŽźæŽŻæŽœææ…æˆæŽæ‘æ“æ”æ•æœæ æ„æȘæŹæČæłæ”æžæčæ‰æŠææ’æ”æ˜æžæ æąæ€æ„æ©æȘæŻæ°æ”æœæżæ‘‹æ‘æ‘‘æ‘’æ‘“æ‘”æ‘šæ‘›æ‘œæ‘æ‘Ÿæ‘ æ‘Ąæ‘Łæ‘­æ‘łæ‘Žæ‘»æ‘œæ’…æ’‡æ’æ’æ’‘æ’˜æ’™æ’›æ’æ’Ÿæ’Ąæ’Łæ’Šæ’šæ’Źæ’łæ’œæ’Ÿæ’ż"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擀擄擩æ“Șæ“­æ“°æ“”æ“·æ“»æ“żæ”æ”„æ”ˆæ”‰æ”Šæ”æ”“æ””æ”–æ”™æ”›æ”žæ”Ÿæ”ąæ”Šæ”©æ”źæ”±æ”ș攌攜敃敇敉敐敒敔敟敠敧敫æ•șæ•œæ–æ–…æ–Šæ–’æ–•æ–˜æ–æ– æ–Łæ–Šæ–źæ–Čæ–łæ–Žæ–żæ—‚旈旉旎旐旔旖旘旟旰æ—Čæ—Žæ—”æ—čæ—Ÿæ—żæ˜€æ˜„昈昉昍昑昒昕昖昝"], -["8fc2a1","æ˜žæ˜Ąæ˜ąæ˜Łæ˜€æ˜Šæ˜©æ˜Șæ˜«æ˜Źæ˜źæ˜°æ˜±æ˜łæ˜čæ˜·æ™€æ™…æ™†æ™Šæ™Œæ™‘æ™Žæ™—æ™˜æ™™æ™›æ™œæ™ æ™Ąæ›»æ™Șæ™«æ™Źæ™Ÿæ™łæ™”æ™żæ™·æ™žæ™č晻暀晌暋暌暍暐暒暙暚暛暜暟暠暀暭暱æšČæš”æš»æšżæ›€æ›‚æ›ƒæ›ˆæ›Œæ›Žæ›æ›”æ››æ›Ÿæ›šæ›«æ›Źæ›źæ›șæœ…æœ‡æœŽæœ“æœ™æœœæœ æœąæœłæœŸæ…æ‡æˆæŒæ”æ•æ"], -["8fc3a1","æŠæŹæźæŽæ¶æ»æžæž„æžŽæžæž‘æž“æž–æž˜æž™æž›æž°æž±æžČ枔枻枌果æŸčæŸ€æŸ‚æŸƒæŸ…æŸˆæŸ‰æŸ’æŸ—æŸ™æŸœæŸĄæŸŠæŸ°æŸČæŸ¶æŸ·æĄ’æ ”æ ™æ æ Ÿæ šæ §æ Źæ ­æ Żæ °æ ±æ łæ »æ żæĄ„æĄ…æĄŠæĄŒæĄ•æĄ—æĄ˜æĄ›æĄ«æĄź",4,"æĄ”æĄčæĄșæĄ»æĄŒæą‚æą„æą†æąˆæą–æą˜æąšæąœæąĄæąŁæą„æą©æąȘæąźæąČæą»æŁ…æŁˆæŁŒæŁ"], -["8fc4a1","æŁæŁ‘æŁ“æŁ–æŁ™æŁœæŁæŁ„æŁšæŁȘæŁ«æŁŹæŁ­æŁ°æŁ±æŁ”æŁ¶æŁ»æŁŒæŁœæ€†æ€‰æ€Šæ€æ€‘æ€“æ€–æ€—æ€±æ€łæ€”æ€žæ€»æ„‚æ„…æ„‰æ„Žæ„—æ„›æ„Łæ„€æ„„æ„Šæ„šæ„©æ„Źæ„°æ„±æ„Čæ„șæ„»æ„żæŠ€æŠæŠ’æŠ–æŠ˜æŠĄæŠ„æŠŠæŠšæŠ«æŠ­æŠŻæŠ·æŠžæŠșæŠŒæ§…æ§ˆæ§‘æ§–æ§—æ§ąæ§„æ§źæ§Żæ§±æ§łæ§”æ§Ÿæš€æšæšƒæšæš‘æš•æššæšæš æš€æššæš°æšČ"], -["8fc5a1","æšŽæš·æš»æšŸæšżæ©…æ©†æ©‰æ©Šæ©Žæ©æ©‘æ©’æ©•æ©–æ©›æ©€æ©§æ©Șæ©±æ©łæ©ŸæȘæȘƒæȘ†æȘ‡æȘ‰æȘ‹æȘ‘æȘ›æȘæȘžæȘŸæȘ„æȘ«æȘŻæȘ°æȘ±æȘŽæȘœæȘŸæȘżæ«†æ«‰æ«ˆæ«Œæ«æ«”æ«•æ«–æ«œæ«æ«€æ«§æ«Źæ«°æ«±æ«Čæ«Œæ«œæŹ‚æŹƒæŹ†æŹ‡æŹ‰æŹæŹæŹ‘æŹ—æŹ›æŹžæŹ€æŹšæŹ«æŹŹæŹŻæŹ”æŹ¶æŹ»æŹżæ­†æ­Šæ­æ­’æ­–æ­˜æ­æ­ æ­§æ­«æ­źæ­°æ­”æ­œ"], -["8fc6a1","æ­Ÿæź‚æź…æź—æź›æźŸæź æźąæźŁæźšæź©æźŹæź­æźźæź°æźžæźčæźœæźŸæŻƒæŻ„æŻ‰æŻŒæŻ–æŻšæŻĄæŻŁæŻŠæŻ§æŻźæŻ±æŻ·æŻčæŻżæ°‚æ°„æ°…æ°‰æ°æ°Žæ°æ°’æ°™æ°Ÿæ°Šæ°§æ°šæ°Źæ°źæ°łæ°”æ°¶æ°șæ°»æ°żæ±Šæ±‹æ±æ±æ±’æ±”æ±™æ±›æ±œæ±«æ±­æ±Żæ±Žæ±¶æ±žæ±čæ±»æČ…æČ†æČ‡æČ‰æČ”æČ•æČ—æČ˜æČœæČŸæČ°æČČæČŽæł‚æł†æłæłæłæł‘æł’æł”æł–"], -["8fc7a1","æłšæłœæł æł§æł©æł«æłŹæłźæłČæłŽæŽ„æŽ‡æŽŠæŽŽæŽæŽ‘æŽ“æŽšæŽŠæŽ§æŽšæ±§æŽźæŽŻæŽ±æŽčæŽŒæŽżæ”—æ”žæ”Ÿæ”Ąæ”„æ”§æ”Żæ”°æ”Œæ¶‚æ¶‡æ¶‘æ¶’æ¶”æ¶–æ¶—æ¶˜æ¶Șæ¶Źæ¶Žæ¶·æ¶čæ¶œæ¶żæ·„æ·ˆæ·Šæ·Žæ·æ·–æ·›æ·æ·Ÿæ· æ·ąæ·„æ·©æ·Żæ·°æ·Žæ·¶æ·Œæž€æž„æžžæžąæž§æžČæž¶æžč枻枌æč„æč…æčˆæč‰æč‹æčæč‘æč’æč“æč”æč—æčœæčæčž"], -["8fc8a1","æčąæčŁæčšæčłæč»æčœæșæș“æș™æș æș§æș­æșźæș±æșłæș»æșżæ»€æ»æ»ƒæ»‡æ»ˆæ»Šæ»æ»Žæ»æ»«æ»­æ»źæ»č滻滜挄挈挊挌挍挖挘挚挛挊挩æŒȘæŒŻæŒ°æŒłæŒ¶æŒ»æŒŒæŒ­æœæœ‘æœ’æœ“æœ—æœ™æœšæœæœžæœĄæœąæœšæœŹæœœæœŸæŸƒæŸ‡æŸˆæŸ‹æŸŒæŸæŸæŸ’æŸ“æŸ”æŸ–æŸšæŸŸæŸ æŸ„æŸŠæŸ§æŸšæŸźæŸŻæŸ°æŸ”æŸ¶æŸŒæż…æż‡æżˆæżŠ"], -["8fc9a1","æżšæżžæżšæż©æż°æż”æżčæżŒæżœç€€ç€…ç€†ç€‡ç€ç€—ç€ ç€Łç€Żç€Žç€·ç€čç€Œçƒç„çˆç‰çŠç‹ç”ç•ççžçŽç€ç„çŹçźç”ç¶çŸç‚ç‚…ç‚†ç‚”",4,"炛炀炫炰炱炎炷烊烑烓烔烕烖烘烜烀çƒș焃",4,"ç„‹ç„Œç„ç„žç„ ç„«ç„­ç„Żç„°ç„±ç„žç…ç……ç…†ç…‡ç…Šç…‹ç…ç…’ç…—ç…šç…œç…žç… "], -["8fcaa1","煹ç…č熀熅熇熌熒熚熛熠熱熯熰ç†Č熳ç†șç†żç‡€ç‡ç‡„ç‡‹ç‡Œç‡“ç‡–ç‡™ç‡šç‡œç‡žç‡Ÿçˆ€çˆ‡çˆˆçˆ‰çˆ“çˆ—çˆšçˆçˆŸçˆ€çˆ«çˆŻçˆŽçˆžçˆčç‰ç‰‚ç‰ƒç‰…ç‰Žç‰ç‰ç‰“ç‰•ç‰–ç‰šç‰œç‰žç‰ ç‰Łç‰šç‰«ç‰źç‰Żç‰±ç‰·ç‰žç‰»ç‰Œç‰żçŠ„çŠ‰çŠçŠŽçŠ“çŠ›çŠšçŠ­çŠźçŠ±çŠŽçŠŸç‹ç‹‡ç‹‰ç‹Œç‹•ç‹–ç‹˜ç‹Ÿç‹„ç‹łç‹Žç‹ș狻"], -["8fcba1","ç‹ŸçŒ‚çŒ„çŒ…çŒ‡çŒ‹çŒçŒ’çŒ“çŒ˜çŒ™çŒžçŒąçŒ€çŒ§çŒšçŒŹçŒ±çŒČ猔çŒșçŒ»çŒœçƒççç’ç–ç˜ççžçŸç çŠç§ç©ç«çŹçźçŻç±ç·çčçŒçŽ€çŽçŽƒçŽ…çŽ†çŽŽçŽçŽ“çŽ•çŽ—çŽ˜çŽœçŽžçŽŸçŽ çŽąçŽ„çŽŠçŽȘ玫玭玔玷çŽčçŽŒçŽœçŽżç…ç†ç‰ç‹çŒçç’ç“ç–ç™ççĄçŁçŠç§ç©çŽç”ç·çčçș珻珜"], -["8fcca1","çżç€çç„ç‡çŠç‘çšç›ç€çŠçš",9,"çčç‘€ç‘ƒç‘„ç‘†ç‘‡ç‘‹ç‘ç‘‘ç‘’ç‘—ç‘ç‘ąç‘Šç‘§ç‘šç‘«ç‘­ç‘źç‘±ç‘Čç’€ç’ç’…ç’†ç’‡ç’‰ç’ç’ç’‘ç’’ç’˜ç’™ç’šç’œç’Ÿç’ ç’Ąç’Łç’Šç’šç’©ç’Șç’«ç’źç’Żç’±ç’Čç’”ç’čç’»ç’żç“ˆç“‰ç“Œç“ç““ç“˜ç“šç“›ç“žç“Ÿç“€ç“šç“Ș瓫瓯瓎ç“șç“»ç“Œç“żç”†"], -["8fcda1","甒甖甗甠甥甀甧甩ç”Ș甯甶ç”čç”œç”Ÿç”żç•€ç•ƒç•‡ç•ˆç•Žç•ç•’ç•—ç•žç•Ÿç•Ąç•Żç•±ç•č",5,"ç–ç–…ç–ç–’ç–“ç–•ç–™ç–œç–ąç–€ç–Žç–șç–żç—€ç—ç—„ç—†ç—Œç—Žç—ç——ç—œç—Ÿç— ç—Ąç—€ç—§ç—Źç—źç—Żç—±ç—čç˜€ç˜‚ç˜ƒç˜„ç˜‡ç˜ˆç˜Šç˜Œç˜ç˜’ç˜“ç˜•ç˜–ç˜™ç˜›ç˜œç˜ç˜žç˜Łç˜„ç˜Šç˜©ç˜­ç˜Č瘳瘔瘞ç˜č"], -["8fcea1","ç˜șç˜Œç™Šç™€ç™ç™ƒç™„ç™…ç™‰ç™‹ç™•ç™™ç™Ÿç™€ç™„ç™­ç™źç™Żç™±ç™Žçšçš…çšŒçšçš•çš›çšœçšçšŸçš çšą",6,"çšȘçš­çšœç›ç›…ç›‰ç›‹ç›Œç›Žç›”ç›™ç› ç›Šç›šç›Źç›°ç›±ç›¶ç›čç›Œçœ€çœ†çœŠçœŽçœ’çœ”çœ•çœ—çœ™çœšçœœçœąçœšçœ­çœźçœŻçœŽçœ”çœ¶çœčçœœçœŸç‚ç…ç†çŠççŽçç’ç–ç—çœçžçŸç çą"], -["8fcfa1","着睧çȘ睬睰çČ睳睮çșçœçž€çž„çžŒçžçž”çž•çž–çžšçžŸçžąçž§çžȘçžźçžŻçž±çž”çžŸçŸƒçŸ‰çŸ‘çŸ’çŸ•çŸ™çŸžçŸŸçŸ çŸ€çŸŠçŸȘçŸŹçŸ°çŸ±çŸŽçŸžçŸ»ç …ç †ç ‰ç ç Žç ‘ç ç Ąç ąç Łç ­ç źç °ç ”ç ·çĄƒçĄ„çĄ‡çĄˆçĄŒçĄŽçĄ’çĄœçĄžçĄ çĄĄçĄŁçĄ€çĄšçĄȘ祟çĄșçĄŸçąŠçąçą”çą˜çąĄçąçąžçąŸçą€çąšçąŹçą­çą°çą±çąČçął"], -["8fd0a1","çą»çąœçążçŁ‡çŁˆçŁ‰çŁŒçŁŽçŁ’çŁ“çŁ•çŁ–çŁ€çŁ›çŁŸçŁ çŁĄçŁŠçŁȘçŁČ磳瀀磶磷çŁșçŁ»çŁżç€†ç€Œç€ç€šç€œç€žç€Ÿç€ ç€„ç€§ç€©ç€­ç€±ç€Žç€”ç€»ç€œç€żç„„ç„…ç„†ç„Šç„‹ç„ç„‘ç„”ç„˜ç„›ç„œç„§ç„©ç„«ç„Čç„čç„»ç„Œç„ŸçŠ‹çŠŒçŠ‘çŠ“çŠ”çŠ•çŠ–çŠ˜çŠ›çŠœçŠĄçŠšçŠ©çŠ«çŠŻçŠ±çŠŽçŠžçŠ»ç§‚ç§„ç§‡ç§ˆç§Šç§ç§”ç§–ç§šç§ç§ž"], -["8fd1a1","ç§ ç§ąç§„ç§Șç§«ç§­ç§±ç§žç§Œçš‚çšƒçš‡çš‰çšŠçšŒçš‘çš•çš›çšžçšĄçš§çš«çš­çšŻçš°çšŽçš”çšžçščçšș穄穅穇穈穌穕穖穙穜穝穟穠穄穧ç©Ș穭穔穞穟çȘ€çȘ‚çȘ…çȘ†çȘŠçȘ‹çȘçȘ‘çȘ”çȘžçȘ çȘŁçȘŹçȘłçȘ”çȘčçȘ»çȘŒç«†ç«‰ç«Œç«Žç«‘ç«›ç«šç«©ç««ç«Źç«±ç«Žç«»ç«œç«ŸçŹ‡çŹ”çŹŸçŹŁçŹ§çŹ©çŹȘ珫班珟珯珰"], -["8fd2a1","çŹ±çŹŽçŹœçŹżç­€ç­ç­‡ç­Žç­•ç­ ç­€ç­Šç­©ç­Șç­­ç­Żç­Č筳筷矄矉矎矐矑矖矛矞矠矄矏矯矰çźČ矔矶çźșçź»çźŒçźœçŻ‚çŻ…çŻˆçŻŠçŻ”çŻ–çŻ—çŻ™çŻšçŻ›çŻšçŻȘçŻČ篎篔篞çŻčçŻșçŻŒçŻŸç°ç°‚ç°ƒç°„ç°†ç°‰ç°‹ç°Œç°Žç°ç°™ç°›ç° ç°„ç°Šç°šç°Źç°±ç°łç°Žç°¶ç°čç°ș籆籊籕籑籒籓籙",5], -["8fd3a1","籥籣籧籩籭籟籰ç±Čç±č籌籜çȆçȇçȏçȔçȞçČ çČŠçȰçȶçČ·çČșçČ»çČŒçČżçł„çł‡çłˆçł‰çłçłçł“çł”çł•çł—çł™çłšçłçłŠçł©çł«çł”çŽƒçŽ‡çŽˆçŽ‰çŽçŽ‘çŽ’çŽ“çŽ–çŽçŽžçŽŁçŽŠçŽȘ玭玱玌玜玟甀甁甇甈甍甑甓甗甙甚甜甝甄甧ç”Ș田甞ç”șç”»ç”żç¶ç¶‚ç¶ƒç¶…ç¶†ç¶ˆç¶‹ç¶Œç¶ç¶‘ç¶–ç¶—ç¶"], -["8fd4a1","綞綊綧ç¶Șç¶łç¶¶ç¶·ç¶č緂",4,"ç·Œç·ç·Žç·—ç·™çž€ç·ąç·„ç·Šç·Ș緫緭緱緔緶ç·čç·șçžˆçžçž‘çž•çž—çžœçžçž çž§çžšçžŹçž­çžŻçžłçž¶çžżçč„çč…çč‡çčŽçčçč’çč˜çčŸçčĄçčąçč„çč«çčźçčŻçčłçčžçčŸçșçș†çș‡çșŠçșçș‘çș•çș˜çșšçșçșžçŒŒçŒ»çŒœçŒŸçŒżçœƒçœ„çœ‡çœçœ’çœ“çœ›çœœçœçœĄçœŁçœ€çœ„眊眭"], -["8fd5a1","çœ±çœœçœŸçœżçŸ€çŸ‹çŸçŸçŸçŸ‘çŸ–çŸ—çŸœçŸĄçŸąçŸŠçŸȘçŸ­çŸŽçŸŒçŸżçż€çżƒçżˆçżŽçżçż›çżŸçżŁçż„çżšçżŹçżźçżŻçżČçżșçżœçżŸçżżè€‡è€ˆè€Šè€è€Žè€è€‘è€“è€”è€–è€è€žè€Ÿè€ è€€è€Šè€Źè€źè€°è€Žè€”è€·è€čè€ș而耟聀聄聠聀聊聭聱联肁肈肎肜肞肊肧肫肞è‚čèƒˆèƒèƒèƒ’èƒ”èƒ•èƒ—èƒ˜èƒ èƒ­èƒź"], -["8fd6a1","胰èƒČèƒłèƒ¶èƒčèƒșèƒŸè„ƒè„‹è„–è„—è„˜è„œè„žè„ è„€è„§è„Źè„°è„”è„șè„Œè……è…‡è…Šè…Œè…’è…—è… è…Ąè…§è…šè…©è…­è…Żè…·è†è†è†„è†…è††è†‹è†Žè†–è†˜è†›è†žè†ąè†źè†Čè†Žè†»è‡‹è‡ƒè‡…è‡Šè‡Žè‡è‡•è‡—è‡›è‡è‡žè‡Ąè‡€è‡«è‡Źè‡°è‡±è‡Č臔臶臞è‡čè‡œè‡żèˆ€èˆƒèˆèˆ“èˆ”èˆ™èˆšèˆèˆĄèˆąèˆšèˆČ舎èˆș艃艄艅艆"], -["8fd7a1","è‰‹è‰Žè‰è‰‘è‰–è‰œè‰ è‰Łè‰§è‰­è‰Žè‰»è‰œè‰żèŠ€èŠèŠƒèŠ„èŠ‡èŠ‰èŠŠèŠŽèŠ‘èŠ”èŠ–èŠ˜èŠšèŠ›èŠ èŠĄèŠŁèŠ€èŠ§èŠšèŠ©èŠȘèŠźèŠ°èŠČ芎芷èŠșèŠŒèŠŸèŠżè‹†è‹è‹•è‹šè‹ è‹ąè‹€è‹šè‹Șè‹­è‹Żè‹¶è‹·è‹œè‹ŸèŒ€èŒèŒ‡èŒˆèŒŠèŒ‹è”èŒ›èŒèŒžèŒŸèŒĄèŒąèŒŹèŒ­èŒźèŒ°èŒłèŒ·èŒș茌茜荂荃荄荇荍荎荑荕荖荗荰荞"], -["8fd8a1","èœèżèŽ€èŽ‚èŽ„èŽ†èŽèŽ’èŽ”èŽ•èŽ˜èŽ™èŽ›èŽœèŽèŽŠèŽ§èŽ©èŽŹèŽŸèŽżè€è‡è‰èèè‘è”èè“èšèȘ菶菞èčèŒèè†èŠèè‘è•è™èŽ­èŻèč葅葇葈葊葍葏葑葒葖葘葙葚葜葠葀葄葧è‘Șè‘°è‘łè‘Žè‘¶è‘žè‘Œè‘œè’è’…è’’è’“è’•è’žè’Šè’šè’©è’Șè’Żè’±è’Žè’ș蒜蒟蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧è“Șè“Żè“°è“±è“Č蓷è”Čè“șè“»è“œè”‚è”ƒè”‡è”Œè”Žè”è”œè”žè”ąè”Łè”€è”„è”§è”Șè”«è”Żè”łè”Žè”¶è”żè•†è•",4,"蕖蕙蕜",6,"è•€è•«è•Żè•čè•șè•»è•œè•żè–è–…è–†è–‰è–‹è–Œè–è–“è–˜è–è–Ÿè– è–ąè–„è–§è–Žè–¶è–·è–žè–Œè–œè–Ÿè–żè—‚è—‡è—Šè—‹è—Žè–­è—˜è—šè—Ÿè— è—Šè—šè—­è—łè—¶è—Œ"], -["8fdaa1","è—żè˜€è˜„è˜…è˜è˜Žè˜è˜‘è˜’è˜˜è˜™è˜›è˜žè˜Ąè˜§è˜©è˜¶è˜žè˜ș蘌蘜虀虂虆虒虓虖虗虘虙虝虠",4,"è™©è™Źè™Żè™”è™¶è™·è™șèšèš‘èš–èš˜èššèšœèšĄèšŠèš§èššèš­èš±èšłèšŽèš”èš·èšžèščèšżè›€è›è›ƒè›…è›‘è›’è›•è›—è›šè›œè› è›Łè›„è›§èšˆè›șè›Œè›œèœ„èœ…èœ‡èœ‹èœŽèœèœèœ“èœ”èœ™èœžèœŸèœĄèœŁ"], -["8fdba1","èœšèœźèœŻèœ±èœČèœčèœșèœŒèœœèœŸè€èƒè…èè˜èèĄè€è„èŻè±èČ蝻螃",6,"èž‹èžŒèžèž“èž•èž—èž˜èž™èžžèž èžŁèž§èžŹèž­èžźèž±èž”èžŸèžżèŸèŸˆèŸ‰èŸŠèŸŽèŸ•èŸ–èŸ™èŸšèŸœèŸŸèŸąèŸŁèŸ€èŸȘèŸ«èŸ­èŸ±èŸłèŸžèŸșèŸżè è ƒè †è ‰è Šè ‹è è ™è ’è “è ”è ˜è šè ›è œè žè Ÿè šè ­è źè °è Čè ”"], -["8fdca1","è șè ŒèĄèĄƒèĄ…èĄˆèĄ‰èĄŠèĄ‹èĄŽèĄ‘èĄ•èĄ–èĄ˜èĄšèĄœèĄŸèĄ èĄ€èĄ©èĄ±èĄčèĄ»èą€èą˜èąšèą›èąœèąŸèą èąšèąȘèąșèąœèąŸèŁ€èŁŠ",4,"èŁ‘èŁ’èŁ“èŁ›èŁžèŁ§èŁŻèŁ°èŁ±èŁ”èŁ·è€è€†è€è€Žè€è€•è€–è€˜è€™è€šè€œè€ è€Šè€§è€šè€°è€±è€Č耔è€čè€șè€Ÿè„€è„‚è„…è„†è„‰è„è„’è„—è„šè„›è„œè„Ąè„ąè„Łè„«è„źè„°è„łè„”è„ș"], -["8fdda1","脻脌脜芉芍芐芔芕芛芜芟芠芄芰芎芔芶芷芌觔",4,"è§„è§©è§«è§­è§±è§łè§¶è§čè§œè§żèš„èš…èš‡èšèš‘èš’èš”èš•èšžèš èšąèš€èšŠèš«èšŹèšŻèš”èš·èšœèšŸè©€è©ƒè©…è©‡è©‰è©è©Žè©“è©–è©—è©˜è©œè©è©Ąè©„è©§è©”è©¶è©·è©čè©șè©»è©Ÿè©żèȘ€èȘƒèȘ†èȘ‹èȘèȘèȘ’èȘ–èȘ—èȘ™èȘŸèȘ§èȘ©èȘźèȘŻèȘł"], -["8fdea1","èȘ¶èȘ·èȘ»èȘŸè«ƒè«†è«ˆè«‰è«Šè«‘è«“è«”è«•è«—è«è«Ÿè«Źè«°è«Žè«”è«¶è«Œè«żèŹ…èŹ†èŹ‹èŹ‘èŹœèŹžèŹŸèŹŠèŹ­èŹ°èŹ·èŹŒè­‚",4,"è­ˆè­’è­“è­”è­™è­è­žè­Łè­­è­¶è­žè­čè­Œè­Ÿèźèź„èź…èź‹èźèźèź”èź•èźœèźžèźŸè°žè°čè°œè°Ÿè±…è±‡è±‰è±‹è±è±‘è±“è±”è±—è±˜è±›è±è±™è±Łè±€è±Šè±šè±©è±­è±łè±”è±¶è±»è±ŸèȆ"], -["8fdfa1","èȇèȋèȐèȒèȓèșèțèȜèČ€èČčèČșèł…èł†èł‰èł‹èłèł–èł•èł™èłèłĄèłšèłŹèłŻèł°èłČèł”èł·èłžèłŸèłżèŽèŽƒèŽ‰èŽ’èŽ—èŽ›è”„è”©è”Źè”źè”żè¶‚è¶„è¶ˆè¶è¶è¶‘è¶•è¶žè¶Ÿè¶ è¶Šè¶«è¶Źè¶Żè¶Č趔趷è¶čè¶»è·€è·…è·†è·‡è·ˆè·Šè·Žè·‘è·”è·•è·—è·™è·€è·„è·§è·Źè·°è¶Œè·±è·Čè·Žè·œèžèž„èž…èž†èž‹èž‘èž”èž–èž èžĄèžą"], -["8fe0a1","èžŁèžŠèž§èž±èžłèž¶èž·èžžèžčèžœèč€èčèč‹èčèčŽèčèč”èč›èčœèčèčžèčĄèčąèč©èčŹèč­èčŻèč°èč±èččèčșèč»èș‚èșƒèș‰èșèș’èș•èșšèș›èșèșžèșąèș§èș©èș­èșźèșłèș”èșșèș»è»€è»è»ƒè»„è»‡è»è»‘è»”è»œè»šè»źè»°è»±è»·è»čè»șè»­èŒ€èŒ‚èŒ‡èŒˆèŒèŒèŒ–èŒ—èŒ˜èŒžèŒ èŒĄèŒŁèŒ„èŒ§èŒšèŒŹèŒ­èŒźèŒŽèŒ”èŒ¶èŒ·èŒș蜀蜁"], -["8fe1a1","蜃蜇蜏蜑",4,"èœ˜èœèœžèœ„èŸèŸ èŸĄèŸ€èŸ„èŸŠèŸ”èŸ¶èŸžèŸŸèż€èżèż†èżŠèż‹èżèżèż’èż“èż•èż èżŁèż€èżšèżźèż±èż”èż¶èż»èżŸé€‚é€„é€ˆé€Œé€˜é€›é€šé€©é€Żé€Șé€Źé€­é€łé€Žé€·é€żéƒé„éŒé›ééąéŠé§éŹé°éŽéčé‚…é‚ˆé‚‹é‚Œé‚Žé‚é‚•é‚—é‚˜é‚™é‚›é‚ é‚Ąé‚ąé‚„é‚°é‚Čé‚łé‚Žé‚¶é‚œéƒŒé‚Ÿéƒƒ"], -["8fe2a1","éƒ„éƒ…éƒ‡éƒˆéƒ•éƒ—éƒ˜éƒ™éƒœéƒéƒŸéƒ„éƒ’éƒ¶éƒ«éƒŻéƒ°éƒŽéƒŸéƒżé„€é„„é„…é„†é„ˆé„é„é„”é„–é„—é„˜é„šé„œé„žé„ é„„é„ąé„Łé„§é„©é„źé„Żé„±é„Žé„¶é„·é„čé„șé„Œé„œé…ƒé…‡é…ˆé…é…“é…—é…™é…šé…›é…Ąé…€é…§é…­é…Žé…čé…șé…»é†é†ƒé†…é††é†Šé†Žé†‘é†“é†”é†•é†˜é†žé†Ąé†Šé†šé†Źé†­é†źé†°é†±é†Čé†łé†¶é†»é†Œé†œé†ż"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釀釄釩é‡Ș釬",5,"釷é‡čé‡»é‡œéˆ€éˆéˆ„éˆ…éˆ†éˆ‡éˆ‰éˆŠéˆŒéˆéˆ’éˆ“éˆ–éˆ˜éˆœéˆéˆŁéˆ€éˆ„éˆŠéˆšéˆźéˆŻéˆ°éˆłéˆ”éˆ¶éˆžéˆčéˆșéˆŒéˆŸé‰€é‰‚é‰ƒé‰†é‰‡é‰Šé‰é‰Žé‰é‰‘é‰˜é‰™é‰œé‰é‰ é‰Ąé‰„é‰§é‰šé‰©é‰źé‰Żé‰°é‰”",4,"é‰»é‰Œé‰œé‰żéŠˆéŠ‰éŠŠéŠéŠŽéŠ’éŠ—"], -["8fe4a1","éŠ™éŠŸéŠ éŠ€éŠ„éŠ§éŠšéŠ«éŠŻéŠČ銶銞éŠșéŠ»éŠŒéŠœéŠż",4,"é‹…é‹†é‹‡é‹ˆé‹‹é‹Œé‹é‹Žé‹é‹“é‹•é‹—é‹˜é‹™é‹œé‹é‹Ÿé‹ é‹Ąé‹Łé‹„é‹§é‹šé‹Źé‹źé‹°é‹čé‹»é‹żéŒ€éŒ‚éŒˆéŒéŒ‘éŒ”éŒ•éŒœéŒéŒžéŒŸéŒĄéŒ€éŒ„éŒ§éŒ©éŒȘéŒłéŒŽéŒ¶éŒ·é‡éˆé‰éé‘é’é•é—é˜éšéžé€é„é§é©éȘé­éŻé°é±éłéŽé¶"], -["8fe5a1","éșéœéżéŽ€éŽéŽ‚éŽˆéŽŠéŽ‹éŽéŽéŽ’éŽ•éŽ˜éŽ›éŽžéŽĄéŽŁéŽ€éŽŠéŽšéŽ«éŽŽéŽ”éŽ¶éŽș鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏱鏩鏧éč鏷鏞éșé»éœéé‚é„éˆé‰ééŽéé•é–é—éŸéźéŻé±éČéłéŽé»éżéœé‘ƒé‘…é‘ˆé‘Šé‘Œé‘•é‘™é‘œé‘Ÿé‘Ąé‘Łé‘šé‘«é‘­é‘źé‘Żé‘±é‘Č钄钃镾é•č"], -["8fe6a1","é•Ÿé–„é–ˆé–Œé–é–Žé–é–žé–Ÿé–Ąé–Šé–©é–«é–Źé–Žé–¶é–șé–œé–żé—†é—ˆé—‰é—‹é—é—‘é—’é—“é—™é—šé—é—žé—Ÿé— é—€é—Šé˜é˜žé˜ąé˜€é˜„é˜Šé˜Źé˜±é˜łé˜·é˜žé˜čé˜șé˜Œé˜œé™é™’é™”é™–é™—é™˜é™Ąé™źé™Žé™»é™Œé™Ÿé™żéšéš‚éšƒéš„éš‰éš‘éš–éššéšéšŸéš€éš„éšŠéš©éšźéšŻéšłéšș雊雒ć¶Čé›˜é›šé›é›žé›Ÿé›©é›Żé›±é›ș霂"], -["8fe7a1","éœƒéœ…éœ‰éœšéœ›éœéœĄéœąéœŁéœšéœ±éœłééƒéŠéŽéé•é—é˜éšé›éŁé§éȘéźéłé¶é·éžé»éœéżéž€éž‰éž•éž–éž—éž™éžšéžžéžŸéžąéžŹéžźéž±éžČ鞔鞶鞞éžčéžșéžŒéžŸéžżéŸéŸ„éŸ…éŸ‡éŸ‰éŸŠéŸŒéŸéŸŽéŸéŸ‘éŸ”éŸ—éŸ˜éŸ™éŸéŸžéŸ éŸ›éŸĄéŸ€éŸŻéŸ±éŸŽéŸ·éŸžéŸș頇頊頙頍頎頔頖頜頞頠頣頩"], -["8fe8a1","é «é źé Żé °é Čé łé ”é „é ŸéĄ„éĄ‡éĄŠéĄ‘éĄ’éĄ“éĄ–éĄ—éĄ™éĄšéĄąéĄŁéĄ„éĄŠéĄȘ饏鹫鹭鹟鹰鹎鹷鹞éąșéą»éążéŁ‚éŁ…éŁˆéŁŒéŁĄéŁŁéŁ„éŁŠéŁ§éŁȘéŁłéŁ¶é€‚é€‡é€ˆé€‘é€•é€–é€—é€šé€›é€œé€Ÿé€ąé€Šé€§é€«é€±",4,"é€čé€ș逻逌鄀鄁鄆鄇鄈鄍鄎鄔鄘鄙鄛鄜鄞鄟鄠銛銝銟銊銰銱éŠČ銔"], -["8fe9a1","éŠčéŠșéŠœéŠżé§ƒé§‰é§“é§”é§™é§šé§œé§žé§§é§Șé§«é§Źé§°é§Žé§”é§čé§œé§Ÿéš‚éšƒéš„éš‹éšŒéšéš‘éš–éšžéš éšąéšŁéš€éš§éš­éšźéšłéš”éš¶éšžé©‡é©é©„é©Šé©‹é©Œé©Žé©‘é©”é©–é©éȘȘéȘŹéȘźéȘŻéȘČéȘŽéȘ”éȘ¶éȘčéȘ»éȘŸéȘżé«é«ƒé«†é«ˆé«Žé«é«’髕髖髗髛髜髠髀髄髧髩髏é«Č髳體é«čé«șé«œé«ż",4], -["8feaa1","éŹ„éŹ…éŹˆéŹ‰éŹ‹éŹŒéŹéŹŽéŹéŹ’éŹ–éŹ™éŹ›éŹœéŹ éŹŠéŹ«éŹ­éŹłéŹŽéŹ”éŹ·éŹčéŹșéŹœé­ˆé­‹é­Œé­•é­–é­—é­›é­žé­Ąé­Łé­„é­Šé­šé­Ș",4,"魳魔魷魞é­čé­żéź€éź„éź…éź†éź‡éź‰éźŠéź‹éźéźéźéź”éźšéźéźžéźŠéź§éź©éźŹéź°éź±éźČéź·éźžéź»éźŒéźŸéźżéŻéŻ‡éŻˆéŻŽéŻéŻ—éŻ˜éŻéŻŸéŻ„éŻ§éŻȘ鯫鯯鯳鯷鯞"], -["8feba1","éŻčéŻșéŻœéŻżé°€é°‚é°‹é°é°‘é°–é°˜é°™é°šé°œé°žé°ąé°Łé°Š",4,"é°±é°”é°¶é°·é°œé±é±ƒé±„é±…é±‰é±Šé±Žé±é±é±“é±”é±–é±˜é±›é±é±žé±Ÿé±Łé±©é±Șé±œé±«é±šé±źé±°é±Č鱔鱷鱻鳊éłČéł·éłč鮋鮂鮑鮗鮘鮜鮝鮞鮯鮰éŽČ鎳鎎éŽșéŽŒé”…éŽœé”‚é”ƒé”‡é”Šé”“é””é”Ÿé”Łé”ąé”„é”©é”Ș锫锰锶锷锻"], -["8feca1","é”Œé”Ÿé¶ƒé¶„é¶†é¶Šé¶é¶Žé¶’é¶“é¶•é¶–é¶—é¶˜é¶Ąé¶Ș鶏鶟鶱鶔é¶čé¶Œé¶żé·ƒé·‡é·‰é·Šé·”é·•é·–é·—é·šé·žé·Ÿé· é·„é·§é·©é·«é·źé·°é·łé·Žé·ŸéžŠéž‚éž‡éžŽéžéž‘éž’éž•éž–éž™éžœéžéčșéč»éčŒéș€éș‚éșƒéș„éș…éș‡éșŽéșéș–éș˜éș›éșžéș€éșšéșŹéșźéșŻéș°éșłéșŽéș”é»†é»ˆé»‹é»•é»Ÿé»€é»§é»Źé»­é»źé»°é»±é»Čé»”"], -["8feda1","é»žé»żéŒ‚éŒƒéŒ‰éŒéŒéŒ‘éŒ’éŒ”éŒ–éŒ—éŒ™éŒšéŒ›éŒŸéŒąéŒŠéŒȘéŒ«éŒŻéŒ±éŒČ錎錷éŒčéŒșéŒŒéŒœéŒżéœéœƒ",4,"霓霕霖霗霘霚霝霞霚霩霭",4,"éœłéœ”éœșéœœéŸéŸéŸ‘éŸ’éŸ”éŸ–éŸ—éŸžéŸĄéŸąéŸŁéŸ„"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json deleted file mode 100644 index 85c6934..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +++ /dev/null @@ -1 +0,0 @@ -{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json deleted file mode 100644 index b742e36..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ /dev/null @@ -1,56 +0,0 @@ -[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","î•„",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","îČ",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc","ážż"], -["a8bf","Çč"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","ă€Ÿâż°",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","âșî –î —î ˜âș„㑳㑇âșˆâș‹î žă–žă˜šă˜ŽâșŒâș—ă„źă€˜î Šă§ă§Ÿă©łă§î «î Źă­Žă±źăł âș§î ±î ČâșȘ䁖䅟âșźäŒ·âșłâș¶âș·î »äŽ±äŽŹâș»ää“–ä™Ąä™ŒîĄƒ"], -["fe80","äœŁäœ©äŒäžâ»Šä„‡ä„șä„œäŠ‚äŠƒäŠ…äŠ†äŠŸäŠ›äŠ·äŠ¶îĄ”îĄ•äČŁäȟäČ äČĄä±·äȱ䮓",6,"䶟",93], -["8135f437",""] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json deleted file mode 100644 index 5a3a43c..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json +++ /dev/null @@ -1,125 +0,0 @@ -[ -["0","\u0000",128], -["a1","ïœĄ",62], -["8140","ă€€ă€ă€‚ïŒŒïŒŽăƒ»ïŒšïŒ›ïŒŸïŒă‚›ă‚œÂŽïœ€ÂšïŒŸïżŁïŒżăƒœăƒŸă‚ă‚žă€ƒä»ă€…ă€†ă€‡ăƒŒâ€•â€ïŒïŒŒïœžâˆ„ïœœâ€Šâ€„â€˜â€™â€œâ€ïŒˆïŒ‰ă€”ă€•ïŒ»ïŒœïœ›ïœă€ˆ",9,"ïŒ‹ïŒÂ±Ă—"], -["8180","Ă·ïŒâ‰ ïŒœïŒžâ‰Šâ‰§âˆžâˆŽâ™‚â™€Â°â€Čâ€łâ„ƒïż„ïŒ„ïż ïżĄïŒ…ïŒƒïŒ†ïŒŠïŒ Â§â˜†â˜…â—‹â—â—Žâ—‡â—†â–Ąâ– â–łâ–Čâ–œâ–Œâ€»ă€’â†’â†â†‘â†“ă€“"], -["81b8","∈∋⊆⊇⊂⊃âˆȘ∩"], -["81c8","âˆ§âˆšïżąâ‡’â‡”âˆ€âˆƒ"], -["81da","âˆ âŠ„âŒ’âˆ‚âˆ‡â‰Ąâ‰’â‰Șâ‰«âˆšâˆœâˆâˆ”âˆ«âˆŹ"], -["81f0","ʼn♯♭â™Ș†‥¶"], -["81fc","◯"], -["824f","",9], -["8260","ïŒĄ",25], -["8281","",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"ÎŁ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","ĐŸ",17], -["849f","â”€â”‚â”Œâ”â”˜â””â”œâ”Źâ”€â”Žâ”Œâ”â”ƒâ”â”“â”›â”—â”Łâ”łâ”«â”»â•‹â” â”Żâ”šâ”·â”żâ”â”°â”„â”žâ•‚"], -["8740","①",19,"Ⅰ",9], -["875f","ă‰ăŒ”ăŒąăăŒ˜ăŒ§ăŒƒăŒ¶ă‘ă—ăŒăŒŠăŒŁăŒ«ăŠăŒ»ăŽœăŽăŽžăŽŽăŽă„ăŽĄ"], -["877e","ă»"], -["8780","ă€ă€Ÿâ„–ăâ„ĄăŠ€",4,"㈱ăˆČăˆčăŸăœăŒâ‰’â‰Ąâˆ«âˆźâˆ‘âˆšâŠ„âˆ âˆŸâŠżâˆ”âˆ©âˆȘ"], -["889f","äșœć”–ćšƒé˜żć“€æ„›æŒšć§¶é€ąè‘”茜穐æ‚ȘæĄæž„æ—­è‘ŠèŠŠéŻ”æą“ćœ§æ–Ąæ‰±ćź›ć§è™»éŁŽç”ąç¶ŸéźŽæˆ–çČŸèą·ćź‰ćș”æŒ‰æš—æĄˆé—‡éžæä»„äŒŠäœäŸć‰ć›Čć€·ć§”ćšć°‰æƒŸæ„æ…°æ˜“æ€…ç‚șç•ç•°ç§»ç¶­ç·ŻèƒƒèŽèĄŁèŹ‚é•éș㌻äș•äș„㟟è‚ČéƒçŁŻäž€ćŁ±æșąé€žçšČèŒšèŠ‹é°Żć…ć°ć’œć“Ąć› ć§»ćŒ•éŁČ淫胀蔭"], -["8940","é™ąé™°éš éŸ»ć‹ćłćź‡çƒçŸœèż‚é›šćŻé”œçȘșäž‘çą“è‡ŒæžŠć˜˜ć”„æŹè”šé°»ć§„ćŽ©æ”Šç“œé–ć™‚äș‘運é›Čèé€ŒćĄć–¶ćŹ°ćœ±æ˜ æ›łæ „æ°žæłłæŽ©ç‘›ç›ˆç©Žé Žè‹±èĄ›è© é‹­æ¶Čç–«ç›Šé§…æ‚ŠèŹè¶Šé–ČæŠŽćŽ­ć††"], -["8980","ćœ’ć °ć„„ćźŽć»¶æ€šæŽ©æŽæČżæŒ”ç‚Žç„”ç…™ç‡•çŒżçžè‰¶è‹‘è–—é é‰›éŽ›ćĄ©æ–Œæ±šç”„ć‡čć€źć„„ćŸ€ćżœæŠŒæ—șæšȘæŹ§æźŽçŽ‹çżè„–éŽŹéŽŽé»„ćČĄæČ–è»ć„„ć±‹æ†¶è‡†æĄ¶ç‰Ąäč™äżșćžæ©æž©ç©éŸłäž‹ćŒ–ä»źäœ•äŒœäŸĄäœłćŠ ćŻć˜‰ć€ć«ćź¶ćŻĄç§‘æš‡æžœæž¶æ­ŒæČłç«ç‚çŠçŠŸçšŒçź‡èŠ±è‹›èŒ„è·èŻè“èŠèȘČ昩èČšèżŠéŽéœžèšŠäż„ćłšæˆ‘ç‰™ç”»è‡„èŠœè›Ÿèł€é›…é€“é§•ä»‹äŒšè§Łć›žćĄŠćŁŠć»»ćż«æ€Șæ‚”æąæ‡æˆ’æ‹æ”č"], -["8a40","é­æ™Šæą°æ”·ç°ç•Œçš†ç””èŠ„èŸč開階èČć‡±ćŠŸć€–ć’łćźłćŽ–æ…šæŠ‚æ¶Żçąè“‹èĄ—è©Č鎧éȘžæ”ŹéŠšè›™ćžŁæŸżè›ŽéˆŽćŠƒćš‡ć„ć»“æ‹Ąæ’čæ Œæ žæź»çČçąșç©«èŠšè§’è”«èŒƒéƒ­é–Łéš”é©ć­ŠćČłæ„œéĄéĄŽæŽ›çŹ æš«"], -["8a80","æ©żæą¶é°æœŸć‰Čć–æ°æ‹ŹæŽ»æž‡æ»‘è‘›è€èœ„äž”é°čć¶æ€›æšș鞄æ Șć…œç«ƒè’Čé‡œéŽŒć™›éŽšæ ąèŒ…è±çČ„ćˆˆè‹…ç“ŠäčŸäŸƒć† ćŻ’ćˆŠć‹˜ć‹§ć·»ć–šć Ș槩漌漘毛ćčČćč迂ٿ„Ÿæ…Łæ†Ÿæ›æ•ąæŸ‘æĄ“æŁșæŹŸæ­“æ±—æŒąæŸ—æœ…ç’°ç”˜ç›Łçœ‹ç«żçźĄç°Ąç·©çŒ¶çż°è‚è‰ŠèŽžèŠłè«ŒèČ«é‚„é‘‘é–“é–‘é–ąé™„éŸ“é€šèˆ˜äžžć«ćČžć·ŒçŽ©ç™ŒçœŒćČ©çż«èŽ‹é›é ‘éĄ”éĄ˜äŒäŒŽć±ć–œć™šćŸș愇揉毄ćȐ澌ćčŸćżŒæźæœșæ——æ—ąæœŸæŁ‹æŁ„"], -["8b40","æ©Ÿćž°æŻ…æ°—æ±œç•żç„ˆć­Łçš€çŽ€ćŸœèŠèš˜èČŽè”·è»ŒèŒéŁąéšŽéŹŒäș€ćœć„€ćŠ“ćźœæˆŻæŠ€æ“ŹæŹș犠疑焇矩蟻èȘŒè­°æŽŹèŠéž ć‰ćƒć–«æĄ”æ©˜è©°ç §æ”é»ćŽćźąè„šè™é€†äž˜äč…ä»‡äŒ‘ćŠćžćźźćŒ“æ€„救"], -["8b80","朜求æ±ČæłŁçžçƒç©¶çȘźçŹˆçŽšçłŸç”Šæ—§ç‰›ćŽ»ć±…ć·šæ‹’æ‹ æŒ™æž è™šèš±è·é‹žæŒçŠŠé­šäșšäș«äșŹäŸ›äŸ ćƒ‘ć…‡ç«¶ć…±ć‡¶ć”ćŒĄćżć«ć–ŹćąƒćłĄćŒ·ćœŠæ€Żææ­æŒŸæ•™æ©‹æłç‹‚ç‹­çŸŻèƒžè„…èˆˆè•Žéƒ·éĄéŸżé„—é©šä»°ć‡ć°­æšæ„­ć±€æ›Čæ„”çŽ‰æĄçČćƒ…ć‹€ć‡ć·ŸéŒŠæ–€æŹŁæŹœçŽçŠçŠœç­‹ç·ŠèŠčèŒèĄżè„ŸèŹčèż‘é‡‘ćŸéŠ€äčć€¶ć„ćŒș狗玖矩苊èșŻé§†é§ˆé§’ć…·æ„šè™žć–°ç©ș恶毓遇隅äžČæ«›é‡§ć±‘ć±ˆ"], -["8c40","掘çȘŸæČ“éŽèœĄçȘȘ熊隈çČ‚æ —çč°æĄ‘鍬ć‹Čć›è–«èš“çŸ€è»éƒĄćŠèąˆç„äż‚ć‚Ÿćˆ‘ć…„ć•“ćœ­çȘćž‹ć„‘ćœąćŸ„æ”æ…¶æ…§æ†©æŽČæșæ•Źæ™ŻæĄ‚æž“ç•Šçšœçł»ç”Œç¶™çč‹çœ«èŒŽèŠè›èšˆè©Łè­Šè»œé šé¶èŠžèżŽéŻš"], -["8c80","ćŠ‡æˆŸæ’ƒæż€éš™æĄć‚‘æŹ æ±șæœ”ç©Žç”èĄ€èšŁæœˆä»¶ć€čć€Šć„ć…Œćˆžć‰Łć–§ćœć …ć«Œć»șæ†Čæ‡žæ‹łæČæ€œæš©ç‰œçŠŹçŒźç ”çĄŻç”čçœŒè‚©èŠ‹èŹ™èłąè»’éŁé”é™ș顕鹓éčžć…ƒćŽŸćŽłćč»ćŒŠæž›æșçŽ„çŸç”ƒèˆ·èš€è«ș限äčŽć€‹ć€ć‘Œć›ș槑歀深ćș«ćŒ§æˆžæ•…æžŻæč–ç‹çłŠèąŽè‚ĄèƒĄè°è™ŽèȘ‡è·šéˆ·é›‡éĄ§éŒ“äș”äș’äŒćˆć‘‰ćŸćšŻćŸŒćŸĄæ‚Ÿæą§æȘŽç‘šçąèȘžèȘ€è­·é†äčžé݉äș€äœŒäŸŻć€™ć€–ć…‰ć…ŹćŠŸćŠčć‹ŸćŽšćŁć‘"], -["8d40","ćŽć–‰ć‘ćžąć„œć­”ć­ćźć·„ć·§ć··ćčžćșƒćșšćș·ćŒ˜æ’æ…ŒæŠ—æ‹˜æŽ§æ”»æ˜‚æ™ƒæ›Žæ­æ Ąæą—æ§‹æ±ŸæŽȘæ”©æžŻæșç”Čçš‡çĄŹçšżçł çŽ…çŽ˜ç”žç¶±è€•è€ƒè‚Żè‚±è…”è†èˆȘè’èĄŒèĄĄèŹ›èČąèłŒéƒŠé…”é‰±ç żé‹Œé–€é™"], -["8d80","é …éŠ™é«˜éŽ»ć‰›ćŠ«ć·ćˆćŁ•æ‹·æż è±Ș蜟éșčć…‹ćˆ»ć‘Šć›œç©€é…·é” é»’ç„æŒ‰è…°ç”‘ćżœæƒšéȘšç‹›èŸŒæ­€é ƒä»Šć›°ć€ćąŸć©šæšæ‡‡æ˜æ˜†æ čæą±æ··ç—•çŽșè‰źé­‚äș›äœć‰ć”†ć”Żć·Šć·źæŸ»æČ™ç‘łç ‚è©éŽ–èŁŸććș§æŒ«ć‚”ć‚Źć†æœ€ć“‰ćĄžćŠ»ćź°ćœ©æ‰æŽĄæ œæ­łæžˆçœé‡‡çŠ€ç •ç Šç„­æ–ŽçŽ°èœèŁèŒ‰éš›ć‰€ćœšæçœȘèȡ憮杂é˜Șć ș把肎ć’ČćŽŽćŸŒçą•é·șäœœć‰Šć’‹æŸæ˜šæœ”æŸ”çȘ„ç­–çŽąéŒŻæĄœéź­çŹčćŒ™ć†Šćˆ·"], -["8e40","ćŻŸæ‹¶æ’źæ“Šæœ­æźșè–©é›‘çšéŻ–æŒéŒ†éź«çšżæ™’äž‰ć‚˜ć‚ć±±æƒšæ’’æ•ŁæĄŸç‡ŠçŠç”Łçź—çș‚èš•èźƒèł›é…žé€æ–Źæš«æź‹ä»•ä»”äŒșäœżćˆș揾ćČć—Łć››ćŁ«ć§‹ć§‰ć§żć­ć±ćž‚ćž«ćż—æ€æŒ‡æ”Żć­œæ–Żæ–œæ—šæžæ­ą"], -["8e80","æ­»æ°ç…ç„‰ç§çłžçŽ™çŽ«è‚ąè„‚è‡łèŠ–è©žè©©è©ŠèȘŒè«źèł‡èłœé›ŒéŁŒæ­Żäș‹äŒŒäŸć…ć­—ćŻșæ…ˆæŒæ™‚æŹĄæ»‹æČ»çˆŸç’œç—”çفç€șè€Œè€łè‡Ș蒔蟞汐éčżćŒè­˜éŽ«ç«șè»žćźé›«äžƒć±ćŸ·ć€±ć«‰ćź€æ‚‰æčżæŒ†ç–ŸèłȘćźŸè”€çŻ ćČæŸŽèŠć±Ąè•ŠçžžèˆŽć†™ć°„æšè”Šæ–œç…źç€ŸçŽ—è€…èŹè»Šéźè›‡é‚Ș怟ć‹șć°șæ“çŒçˆ”é…Œé‡ˆéŒ«è‹„ćŻ‚ćŒ±æƒčäž»ć–ćźˆæ‰‹æœ±æźŠç‹©ç çšźè…«è¶Łé…’éŠ–ć„’ć—ć‘ȘćŻżæŽˆæščç¶Źéœ€ć›šćŽć‘š"], -["8f40","ćź—ć°±ć·žäżźæ„æ‹ŸæŽČ秀秋甂çčçż’è‡­èˆŸè’èĄ†è„ČèźèčŽèŒŻé€±é…‹é…Źé›†é†œä»€äœć……ććŸ“æˆŽæŸ”æ±æž‹çŁçžŠé‡éŠƒć”ć€™ćźżæ·‘ç„çžźçČ›ćĄŸç†Ÿć‡șèĄ“èż°äżŠćł»æ˜„çžŹç«Łèˆœé§żć‡†ćŸȘæ—Źæ„Żæź‰æ·ł"], -["8f80","æș–æœ€ç›ŸçŽ”ć·Ąé”é†‡é †ć‡Šćˆæ‰€æš‘æ›™æžšćș¶ç·’çœČæ›žè–Żè—·è«žćŠ©ć™ć„łćșćŸæ•é‹€é™€ć‚·ć„Ÿć‹ćŒ ć‡ćŹć“šć•†ć”±ć˜—ć„šćŠŸćšŒćź”ć°†ć°ć°‘ć°šćș„ćșŠć» ćœ°æ‰żæŠ„æ‹›æŽŒæ·æ˜‡æ˜Œæ˜­æ™¶æŸæąąæšŸæš”æČŒæ¶ˆæž‰æč˜ç„Œç„Šç…§ç—‡çœçĄç€ç„„称章珑çȧçŽčè‚–è–è’‹è•‰èĄèŁłèšŸèšŒè©”è©łè±Ąèłžé†€é‰ŠéŸé˜éšœéž˜äžŠäžˆäžžäč—ć†—ć‰°ćŸŽć ŽćŁŒćŹąćžžæƒ…æ“ŸæĄæ–æ”„çŠ¶ç•łç©Łè’žè­Čé†žéŒ ć˜±ćŸŽéŁŸ"], -["9040","æ‹­æ€æź–ç‡­çč”職è‰Čè§ŠéŁŸè•èŸ±ć°»äŒžäżĄäŸ”ć”‡ćš ćŻćŻ©ćżƒæ…ŽæŒŻæ–°æ™‹æŁźæŠ›æ”žæ·±ç”łç–čçœŸç„žç§ŠçŽłè‡ŁèŠŻè–ȘèŠȘèšșèș«èŸ›é€Č針震äșșä»ćˆƒćĄ”ćŁŹć°‹ç”šć°œè…ŽèšŠèż…é™Łé­çŹ„è«é ˆé…ąć›łćŽš"], -["9080","逗ćčćž‚ćž„æŽšæ°Žç‚ŠçĄçČ‹çż èĄ°é‚é…”éŒéŒ˜éšç‘žé«„ćŽ‡ć”©æ•°æžąè¶šé››æźæ‰æ€™è…é —é›€èŁŸæŸ„æ‘șćŻžäž–ç€Źç•æ˜Żć‡„ćˆ¶ć‹ąć§“ćŸæ€§æˆæ”żæ•Žæ˜Ÿæ™ŽæŁČæ –æ­Łæž…ç‰Č生盛çČŸè–ćŁ°èŁœè„żèȘ èȘ“è«‹é€é†’é’é™æ–‰çšŽè„†éš»ćž­æƒœæˆšæ–„æ˜”æžçŸłç©ç±çžŸè„ŠèČŹè”€è·ĄèčŸçą©ćˆ‡æ‹™æŽ„摂折蚭çȘƒçŻ€èȘŹé›Șç”¶èˆŒè‰ä»™ć…ˆćƒć ćźŁć°‚ć°–ć·æˆŠæ‰‡æ’°æ “æ Žæł‰æ”…æŽ—æŸ“æœœç…Žç…œæ—‹ç©żçź­ç·š"], -["9140","çčŠçŸšè…ș舛èˆčè–Šè©źèłŽè·”éžé·éŠ­éŠ‘é–ƒéźźć‰ć–„æŒžç„¶ć…šçŠ…çč•è†łçłŽć™ŒćĄ‘ćČšæŽȘ曟曜愚狙疏疎瀎焖租çČ—çŽ ç”„è˜‡èšŽé˜»éĄéŒ ćƒ§ć‰”ćŒćąć€‰ć–ȘćŁźć„çˆœćź‹ć±€ćŒæƒŁæƒłæœæŽƒæŒżæŽ»"], -["9180","操早æ›čć·Łæ§æ§œæŒ•ç‡„äș‰ç—©ç›žçȘ“çłŸç·ç¶œèĄè‰è˜è‘Źè’Œè—»èŁ…è”°é€é­éŽ—éœœéš’ćƒćą—æ†Žè‡“è””èŽˆé€ äżƒćŽć‰‡ćłæŻæ‰æŸæžŹè¶łé€Ÿäż—ć±žèłŠæ—ç¶šć’èą–ć…¶æƒć­˜ć­«ć°Šææ‘éœä»–ć€šć€Șæ±°è©‘ć”Ÿć •ćŠ„æƒ°æ‰“æŸèˆ”æ„•é™€é§„éššäœ“ć †ćŻŸè€ćČ±ćžŻćŸ…æ€ æ…‹æˆŽæ›żæł°æ»žèƒŽè…żè‹”èą‹èČžé€€é€źéšŠé»›éŻ›ä»Łć°ć€§çŹŹé†éĄŒé·čæ»ç€§ć“ć•„ćź…æ‰˜æŠžæ‹“æČąæżŻçąèš—éžæżè«ŸèŒžć‡§è›žćȘ"], -["9240","ć©äœ†é”èŸ°ć„Șè„±ć·œç«ȘèŸżæŁšè°·ç‹žé±ˆæšœèȘ°äžčć˜ć˜†ćŠæ‹…æŽąæ—Šæ­Žæ·Ąæč›ç‚­çŸ­ç«ŻçźȘ綻耜胆蛋èȘ•é›ć›ŁćŁ‡ćŒŸæ–­æš–æȘ€æź”ç”·è«‡ć€€çŸ„ćœ°ćŒ›æ„æ™șæ± ç—Žçššçœźè‡Žèœ˜é…éŠłçŻ‰ç•œç«č筑蓄"], -["9280","逐秩çȘ’èŒ¶ć«Ąç€äž­ä»Čćź™ćż æŠœæ˜ŒæŸ±æłšè™«èĄ·èš»é…Žé‹łé§æš—ç€ŠçŒȘ苧著èȯ䞁慆懋斋比枖枳ćșćŒ”ćŒ”ćœ«ćŸŽæ‡ČæŒ‘æšąæœæœźç‰’ç”șçœș聎è„č腞蝶èȘżè«œè¶…è·łéŠšé•·é ‚éł„ć‹…æ—ç›Žæœ•æČˆçèłƒéŽźé™łæŽ„ćąœæ€Žæ§ŒèżœéŽšç—›é€šćĄšæ ‚æŽŽæ§»äœƒæŒŹæŸ˜èŸ»è”Šç¶Žé”æ€żæœ°ćȘ棷描玏çˆȘ搊釣鶎äș­äœŽćœć”扃èČžć‘ˆć €ćźšćžćș•ćș­ć»·ćŒŸæ‚ŒæŠ”æŒșææąŻæ±€çą‡çŠŽçš‹ç· è‰‡èš‚è«Šèč„逓"], -["9340","é‚žé„­é‡˜éŒŽæł„æ‘˜æ“ąæ•”æ»Žçš„çŹ›é©é‘æșșć“ČćŸčæ’€èœèż­é‰„ć…žćĄ«ć€©ć±•ćș—æ·»çșç”œèČŒè»ąéĄ›ç‚čäŒæźżæŸ±ç”°é›»ć…Žćć ”ćĄ—ćŠŹć± ćŸ’æ–—æœæžĄç™»èŸèł­é€”éƒœéç „ç șćŠȘćșŠćœŸć„Žæ€’怒慚憏"], -["9380","ć‡ćˆ€ć”ćĄ”ćĄ˜ć„—ćź•ćł¶ć¶‹æ‚ŒæŠ•æ­æ±æĄƒæąŒæŁŸç›—æ·˜æčŻæ¶›çŻç‡ˆćœ“ç—˜ç„·ç­‰ç­”ç­’çł–ç”±ćˆ°è‘Łè•©è—€èšŽèŹ„è±†èžé€ƒé€é™é™¶é ­éš°é—˜ćƒć‹•ćŒć ‚ć°Žæ†§æ’žæŽžçžłç«„èƒŽè„é“éŠ…ćł éŽ‡ćŒżćŸ—ćŸłæ¶œç‰čçŁçŠżçŻ€æŻ’ç‹ŹèȘ­æ ƒæ©Ąć‡žçȘæ€Žć±Šéł¶è‹«ćŻ…é…‰ç€žć™žć±Żæƒ‡æ•ŠæČŒè±šéé “ć‘‘æ›‡éˆć„ˆé‚Łć†…äčć‡Șè–™èŹŽç˜æșé‹æ„ąéŠŽçž„ç•·ć—æ„ è»Ÿé›Łæ±äșŒć°ŒćŒèż©ćŒ‚èł‘è‚‰è™čć»żæ—„äčłć…„"], -["9440","ćŠ‚ć°żéŸźä»»ćŠŠćżèȘæżĄçŠ°ç„ąćŻ§è‘±çŒ«ç†±ćčŽćż”捻撚燃çȘäčƒć»Œäč‹ćŸœćšąæ‚©æżƒçŽèƒœè„łè†żèŸČèŠ—èš€ć·ŽæŠŠæ’­èŠ‡æ·æłąæŽŸç¶ç Žć©†çœ”èŠ­éŠŹäżłć»ƒæ‹æŽ’æ•—æŻç›ƒç‰ŒèƒŒè‚șèŒ©é…ć€ćŸčćȘ’æą…"], -["9480","æ„łç…€ç‹œèČ·ćŁČèł é™Șé€™èżç§€çŸ§è©äŒŻć‰„ćšæ‹æŸæłŠç™œçź”çČ•èˆ¶è–„èż«æ›æŒ çˆ†çž›èŽ«é§éșŠć‡œçź±çĄČçźžè‚‡ç­ˆæ«šćčĄè‚Œç•‘畠慫鉹æșŒç™ș醗é«ȘäŒçœ°æŠœç­é–„éł©ć™șćĄ™è›€éšŒäŒŽćˆ€ćŠćć›ćž†æŹæ–‘æżæ°Ÿæ±Žç‰ˆçŠŻç­ç•”çčèˆŹè—©èČ©çŻ„é‡†ç…©é ’éŁŻæŒœæ™©ç•Șç›€çŁè•ƒè›źćŒȘ捑搩橃ćș‡ćœŒæ‚Č扉æ‰čæŠ«æ–æŻ”æłŒç–Čçšźçą‘ç§˜ç·‹çœ·è‚„èą«èȘčèČ»éżéžéŁ›æš‹ç°žć‚™ć°ŸćŸźæž‡æŻ˜ç”çœ‰çŸŽ"], -["9540","錻柊皗ćŒčç–‹é«­ćœŠè†è±è‚˜ćŒŒćż…ç•ąç­†é€ŒæĄ§ć§«ćȘ›çŽç™ŸèŹŹäż”ćœȘæš™æ°·æŒ‚ç“ąç„šèĄšè©•è±čć»Ÿæç—…ç§’è‹—éŒšé‹Čè’œè›­é°­ć“ćœŹæ–Œæ”œç€•èČ§èł“é »æ•ç“¶äžä»˜ćŸ ć€«ć©ŠćŻŒć†šćžƒćșœæ€–扶敷"], -["9580","æ–§æ™źæ”źçˆ¶çŹŠè…è†šèŠ™è­œèČ èłŠè”Žé˜œé™„äŸźæ’«æ­Šèˆžè‘Ąè•Șéƒšć°æ„“éąšè‘șè•—äŒć‰ŻćŸ©ćč…æœçŠè…čè€‡èŠ†æ·”ćŒ—æ‰•æČžä»ç‰©éź’ćˆ†ć»ć™Žćąłæ†€æ‰źç„šć„źçČ‰çłžçŽ›é›°æ–‡èžäž™äœ”ć…”ćĄ€ćčŁćčłćŒŠæŸ„äžŠè”œé–‰é™›ç±łé ćƒ»ćŁç™–çą§ćˆ„çž„è”‘çź†ćć€‰ç‰‡çŻ‡ç·šèŸșèż”éäŸżć‹‰ćš©ćŒéž­äżèˆ—é‹Șćœƒæ•æ­©ç”«èŁœèŒ”ç©‚ć‹Ÿćą“æ…•æˆŠæšźæŻç°żè©ć€ŁäżžćŒ…ć‘†ć ±ć„‰ćźćł°ćłŻćŽ©ćș–抱捧攟æ–č朋"], -["9640","æł•æłĄçƒčç Čçž«èƒžèŠłèŒè“Źèœ‚è€’èšȘè±Šé‚Šé‹’éŁœéłłé”ŹäčäșĄć‚ć‰–ćŠćŠšćžœćż˜ćż™æˆżæšŽæœ›æŸæŁ’ć†’çŽĄè‚Șè†šèŹ€èȌèČżé‰Ÿé˜Č搠頬挗惕捜汹æ’ČæœŽç‰§çŠç©†é‡Šć‹ƒæČĄæź†ć €ćčŒć„”æœŹçż»ć‡Ąç›†"], -["9680","æ‘©çŁšé­”éș»ćŸ‹ćŠčæ˜§æžšæŻŽć“©æ§™ćč•膜枕éźȘæŸŸé±’æĄäșŠäżŁćˆæŠč末æČ«èż„䟭çč­éșżäž‡æ…ąæș€æŒ«è”“摳æœȘé­…ć·łçź•ćČŹćŻ†èœœæčŠè“‘çš”è„ˆćŠ™çČæ°‘çœ ć‹™ć€ąç„Ąç‰ŸçŸ›éœ§é”Ąæ€‹ć©żćš˜ć†„ćć‘œæ˜Žç›Ÿèż·éŠ˜éłŽć§Șç‰æ»…ć…æŁ‰ç¶żç·Źéąéșșæ‘žæšĄèŒ‚ćŠ„ć­ŸæŻ›çŒ›ç›Čç¶Č耗蒙ć„Čæœšé»™ç›źæąć‹żé€…ć°€æˆ»ç±ŸèČ°ć•æ‚¶çŽ‹é–€ćŒäčŸć†¶ć€œçˆșè€¶é‡ŽćŒ„çŸąćŽ„ćœčçŽ„è–Źèšłèșé–æŸłè–źé‘“æ„‰æ„ˆæČč癒"], -["9740","è«­èŒžć”Żäœ‘ć„Șć‹‡ć‹ćź„ćčœæ‚ æ†‚揖有柚æč§æ¶ŒçŒ¶çŒ·ç”±ç„èŁ•èȘ˜éŠé‚‘éƒ”é›„èžć€•äșˆäœ™äžŽèȘ‰èŒżé ć‚­ćčŒćŠ–ćźčćșžæšæș擁曜愊様掋æș¶ç†”甚çȘŻçŸŠè€€è‘‰è“‰èŠèŹĄèžŠé„é™œé€Šæ…ŸæŠ‘æŹČ"], -["9780","æČƒæ”ŽçżŒçżŒæ·€çŸ…èžșèŁžæ„èŽ±é Œé›·æŽ›ç”Ąèœé…Șäč±ć”ć”æŹ„æż«è—è˜­èŠ§ćˆ©ćć±„æŽæąšç†ç’ƒç—ąèŁèŁĄé‡Œé›ąé™žćŸ‹çŽ‡ç«‹è‘ŽæŽ ç•„ćŠ‰æ”æșœç‰ç•™çĄ«çČ’éš†ç«œéŸäŸ¶æ…źæ—…è™œäș†äșźćƒšäžĄć‡ŒćŻźæ–™æąæ¶ŒçŒŸç™‚çž­çšœçł§è‰Żè«’éŒé‡é™”é ˜ćŠ›ç·‘ć€«ćŽ˜æž—æ·‹ç‡çłè‡šèŒȘ隣鱗éșŸç‘ ćĄæ¶™çŽŻéĄžä»€äŒ¶äŸ‹ć†·ćŠ±ć¶ș怜çŽČ瀌苓鈎隷零霊éș—éœąæšŠæ­Žćˆ—ćŠŁçƒˆèŁ‚ć»‰æ‹æ†æŒŁç…‰ç°Ÿç·ŽèŻ"], -["9840","è“źé€ŁéŒŹć‘‚é­Żæ«“ç‚‰èł‚è·ŻéœČćŠŽć©ć»ŠćŒ„æœ—æ„ŒæŠ”æ”ȘæŒç‰ąç‹ŒçŻ­è€èŸè‹éƒŽć…­éș“犄肋éŒČè«–ć€­ć’Œè©±æ­Șèł„è„‡æƒ‘æž é·Čäș™äș˜é°è©«è—è•𿀀æčŸçą—è…•"], -["989f","ćŒŒäžäž•äžȘäž±äž¶äžŒäžżäč‚äč–äč˜äș‚äș…豫äșŠèˆ’ćŒäșŽäșžäșŸäș äșąäș°äșłäș¶ä»Žä»ä»„ä»†ä»‚ä»—ä»žä»­ä»Ÿä»·äŒ‰äœšäŒ°äœ›äœäœ—äœ‡äœ¶äŸˆäŸäŸ˜äœ»äœ©äœ°äŸ‘äœŻäŸ†äŸ–ć„˜äż”äżŸäżŽäż˜äż›äż‘äżšäżäż€äż„怚怹怔ć€Șć€„ć€…äŒœäż¶ć€Ąć€©ć€ŹäżŸäżŻć€‘ć€†ćƒć‡æœƒć•ććˆćšć–ćŹćžć‚€ć‚šć‚…ć‚Žć‚Č"], -["9940","ćƒ‰ćƒŠć‚łćƒ‚ćƒ–ćƒžćƒ„ćƒ­ćƒŁćƒźćƒčćƒ”ć„‰ć„ć„‚ć„–ć„•ć„”ć„šć„Ąć„șć„·ć„Œć„»ć„żć…€ć…’ć…Œć…”ć…ąç«žć…©ć…Șć…źć†€ć†‚ć›˜ć†Œć†‰ć†ć†‘ć†“ć†•ć†–ć†€ć†Šć†ąć†©ć†Ș憫憳憱ć†Čć†°ć†”ć†œć‡…ć‡‰ć‡›ć‡ è™•ć‡©ć‡­"], -["9980","ć‡°ć‡”ć‡Ÿćˆ„ćˆ‹ćˆ”ćˆŽćˆ§ćˆȘ戟戳ćˆč扏扄手扌扞扔ć‰Șć‰Žć‰©ć‰łć‰żć‰œćŠćŠ”ćŠ’ć‰±ćŠˆćŠ‘èŸšèŸ§ćŠŹćŠ­ćŠŒćŠ”ć‹ć‹ć‹—ć‹žć‹Łć‹ŠéŁ­ć‹ ć‹łć‹”ć‹žć‹čćŒ†ćŒˆç”žćŒćŒćŒćŒ•ćŒšćŒŁćŒŻćŒ±ćŒłćŒžć€ć†ć…äž—ć‰ćć‡–ćžć©ćźć€˜ć»ć·ćŽ‚ćŽ–ćŽ ćŽŠćŽ„ćŽźćŽ°ćŽ¶ćƒç°’é›™ćŸæ›Œç‡źćźćšć­ćșććœć‘€ćŹć­ćŒćźć¶ć©ćć‘Žć’ć‘”ć’Žć‘Ÿć‘±ć‘·ć‘°ć’’ć‘»ć’€ć‘¶ć’„ć’ć’†ć“‡ć’ąć’žć’„ć’Źć“„ć“ˆć’š"], -["9a40","ć’«ć“‚ć’€ć’Ÿć’Œć“˜ć“„ć“Šć”ć””ć“œć“źć“­ć“ș擱ć”čć•€ć•Łć•Œć”źć•œć•…ć•–ć•—ć”žć”łć•ć–™ć–€ć’Żć–Šć–Ÿć•»ć•Ÿć–˜ć–žć–źć•Œć–ƒć–©ć–‡ć–šć—šć—…ć—Ÿć—„ć—œć—€ć—”ć˜”ć—·ć˜–ć—Ÿć—œć˜›ć—čć™Žć™ç‡Ÿć˜Žć˜¶ć˜Č昞"], -["9a80","ć™«ć™€ć˜Żć™Źć™Șćš†ćš€ćšŠćš ćš”ćšćš„ćšźćš¶ćšŽć›‚ćšŒć›ć›ƒć›€ć›ˆć›Žć›‘ć›“ć›—ć›źć›čćœ€ć›żćœ„ćœ‰ćœˆćœ‹ćœćœ“ćœ˜ćœ–ć—‡ćœœćœŠćœ·ćœžćŽćœ»ć€ćć©ćŸ€ćžˆćĄćżćž‰ćž“ćž ćžłćž€ćžȘ枰柃柆柔柒染栊柖柣栋栙栝ćĄČć ĄćĄąćĄ‹ćĄ°æŻ€ćĄ’ć œćĄč汅ćąčćąŸćą«ćąșćŁžćą»ćąžćąźćŁ…ćŁ“ćŁ‘ćŁ—ćŁ™ćŁ˜ćŁ„ćŁœćŁ€ćŁŸćŁŻćŁșćŁčćŁ»ćŁŒćŁœć€‚ć€Šć€ć€›æąŠć€„ć€Źć€­ć€Čć€žć€Ÿç«’ć„•ć„ć„Žć„šć„˜ć„ąć„ ć„§ć„Źć„©"], -["9b40","ć„žćŠćŠäœžäŸ«ćŠŁćŠČć§†ć§šć§œćŠć§™ć§šćš„ćšŸćš‘ćšœćš‰ćššć©€ć©Źć©‰ćš”ćš¶ć©ąć©ȘćȘšćȘŒćȘŸć«‹ć«‚ćȘœć«Łć«—櫊櫩櫖ć«șć«»ćŹŒćŹ‹ćŹ–ćŹČ櫐ćŹȘćŹ¶ćŹŸć­ƒć­…ć­€ć­‘ć­•ć­šć­›ć­„ć­©ć­°ć­łć­”ć­žæ–ˆć­ș漀"], -["9b80","ćźƒćźŠćźžćŻƒćŻ‡ćŻ‰ćŻ”ćŻćŻ€ćŻŠćŻąćŻžćŻ„ćŻ«ćŻ°ćŻ¶ćŻłć°…ć°‡ć°ˆć°ć°“ć° ć°ąć°šć°žć°čć±ć±†ć±Žć±“ć±ć±ć­±ć±Źć±źäčąć±¶ć±čćȌćȑćȔ橛ćČ«ćČ»ćȶćČŒćČ·ćł…ćČŸćł‡ćł™ćł©ćłœćłșćł­ć¶ŒćłȘćŽ‹ćŽ•ćŽ—ć”œćŽŸćŽ›ćŽ‘ćŽ”ćŽąćŽšćŽ™ćŽ˜ć”Œć”’ć”Žć”‹ć”Źć”łć”¶ć¶‡ć¶„ć¶‚ć¶ąć¶ć¶Źć¶źć¶œć¶ć¶·ć¶Œć·‰ć·ć·“ć·’ć·–ć·›ć·«ć·Č淔枋枚枙枑枛架枷ćč„ćčƒćč€ćčŽćč—ćč”ćčŸćčąćč€ćč‡ćč”ćč¶ćčșéșŒćčżćș ć»ć»‚ć»ˆć»ć»"], -["9c40","ć»–ć»Łć»ć»šć»›ć»ąć»Ąć»šć»©ć»Źć»±ć»łć»°ć»Žć»žć»ŸćŒƒćŒ‰ćœćœœćŒ‹ćŒ‘ćŒ–ćŒ©ćŒ­ćŒžćœćœˆćœŒćœŽćŒŻćœ‘ćœ–ćœ—ćœ™ćœĄćœ­ćœłćœ·ćŸƒćŸ‚ćœżćŸŠćŸˆćŸ‘ćŸ‡ćŸžćŸ™ćŸ˜ćŸ ćŸšćŸ­ćŸŒćż–ćż»ćż€ćżžćż±ćżæ‚łćżżæ€Ąæ "], -["9c80","怙怐怩怎怱怛怕怫怊怏æ€ș恚恁æȘæ·æŸæŠæ†ææŁæƒæ€æ‚æŹæ«æ™æ‚æ‚æƒ§æ‚ƒæ‚šæ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒĄæ‚žæƒ æƒ“æ‚Žćż°æ‚œæƒ†æ‚”æƒ˜æ…æ„•æ„†æƒ¶æƒ·æ„€æƒŽæƒșæ„ƒæ„Ąæƒ»æƒ±æ„æ„Žæ…‡æ„Ÿæ„šæ„§æ…Šæ„żæ„Œæ„Źæ„Žæ„œæ…‚æ…„æ…łæ…·æ…˜æ…™æ…šæ…«æ…Žæ…Żæ…„æ…±æ…Ÿæ…æ…“æ…”æ†™æ†–æ†‡æ†Źæ†”æ†šæ†Šæ†‘æ†«æ†źæ‡Œæ‡Šæ‡‰æ‡·æ‡ˆæ‡ƒæ‡†æ†ș懋çœčæ‡æ‡Šæ‡Łæ‡¶æ‡șæ‡Žæ‡żæ‡œæ‡Œæ‡Ÿæˆ€æˆˆæˆ‰æˆæˆŒæˆ”æˆ›"], -["9d40","æˆžæˆĄæˆȘæˆźæˆ°æˆČæˆłæ‰æ‰Žæ‰žæ‰Łæ‰›æ‰ æ‰šæ‰ŒæŠ‚æŠ‰æ‰ŸæŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹æ‹żæ‹†æ“”æ‹ˆæ‹œæ‹Œæ‹Šæ‹‚æ‹‡æŠ›æ‹‰æŒŒæ‹źæ‹±æŒ§æŒ‚æŒˆæ‹Żæ‹”ææŒŸææœææŽ–æŽŽæŽ€æŽ«æ¶æŽŁæŽæŽ‰æŽŸæŽ”æ«"], -["9d80","æ©æŽŸæ©æ€æ†æŁæ‰æ’æ¶æ„æ–æŽæ†æ“æŠæ¶æ”æ—æšææ‘§æ‘Żæ‘¶æ‘Žæ”Șæ’•æ’“æ’„æ’©æ’ˆæ’Œæ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“ĄæŠŹæ“Łæ“Żæ”Źæ“¶æ“Žæ“Čæ“șæ”€æ“œæ”˜æ”œæ”…æ”€æ”Łæ”«æ”Žæ””æ”·æ”¶æ”žç•‹æ•ˆæ•–æ••æ•æ•˜æ•žæ•æ•Čæ•žæ–‚æ–ƒèźŠæ–›æ–Ÿæ–«æ–·æ—ƒæ—†æ—æ—„æ—Œæ—’æ—›æ—™æ— æ—Ąæ—±æČæ˜Šæ˜ƒæ—»æłæ˜”æ˜¶æ˜Žæ˜œæ™æ™„æ™‰æ™æ™žæ™æ™€æ™§æ™šæ™Ÿæ™ąæ™°æšƒæšˆæšŽæš‰æš„æš˜æšæ›æšč曉暟暌"], -["9e40","æ›„æšžæ›–æ›šæ› æ˜żæ›Šæ›©æ›°æ›”æ›·æœæœ–æœžæœŠæœ§éœžæœźæœżæœ¶ææœžæœ·æ†æžæ æ™æŁæ€æž‰æ°æž©æŒæȘæžŒæž‹æžŠæžĄæž…æž·æŸŻæžŽæŸŹæžłæŸ©æžžæŸ€æŸžæŸæŸąæŸźæžč柎柆柧æȘœæ žæĄ†æ ©æĄ€æĄæ ČæĄŽ"], -["9e80","æąłæ «æĄ™æĄŁæĄ·æĄżæąŸæąæą­æą”æąæą›æąƒæȘźæąčæĄŽæą”æą æąșæ€æąæĄŸæ€æŁŠæ€ˆæŁ˜æ€ąæ€ŠæŁĄæ€ŒæŁæŁ”æŁ§æŁ•æ€¶æ€’æ€„æŁ—æŁŁæ€„æŁčæŁ æŁŻæ€šæ€Șæ€šæ€Łæ€ĄæŁ†æ„čæ„·æ„œæ„žæ„«æ„”感æ„꿀迄޿€œæ„™æ€°æ„Ąæ„žæ„æŠæ„ȘæŠČæŠźæ§æŠżæ§æ§“æŠŸæ§ŽćŻšæ§Šæ§æŠ»æ§ƒæŠ§æšźæŠ‘æŠ æŠœæŠ•æŠŽæ§žæ§šæš‚æš›æ§żæŹŠæ§čæ§Čæ§§æš…æŠ±æšžæ§­æš”æ§«æšŠæš’æ«æšŁæš“æ©„æšŒæ©Čæš¶æ©žæ©‡æ©ąæ©™æ©Šæ©ˆæšžæšąæȘæȘæȘ æȘ„æȘąæȘŁ"], -["9f40","æȘ—蘗æȘ»æ«ƒæ«‚æȘžæȘłæȘŹæ«žæ«‘櫟æȘȘ櫚æ«Șæ«»æŹ…è˜–æ«șæŹ’æŹ–éŹ±æŹŸæŹžæŹ·ç›œæŹčéŁźæ­‡æ­ƒæ­‰æ­æ­™æ­”æ­›æ­Ÿæ­Ąæ­žæ­čæ­żæź€æź„æźƒæźæź˜æź•æźžæź€æźȘæź«æźŻæźČæź±æźłæź·æźŒæŻ†æŻ‹æŻ“æŻŸæŻŹæŻ«æŻłæŻŻ"], -["9f80","éșŸæ°ˆæ°“æ°”æ°›æ°€æ°Łæ±žæ±•æ±ąæ±ȘæČ‚æČæČšæČæČ›æ±Ÿæ±šæ±łæČ’æČæł„æł±æł“æČœæł—æł…æłæČźæČ±æČŸæČșæł›æłŻæł™æłȘæŽŸèĄæŽ¶æŽ«æŽœæŽžæŽ™æŽ”æŽłæŽ’æŽŒæ”Łæ¶“æ”€æ”šæ”čæ”™æ¶Žæ¶•æż€æ¶…æ·čæž•æžŠæ¶”æ·‡æ·Šæ¶žæ·†æ·Źæ·žæ·Œæ·šæ·’æ·…æ·ș淙淀淕æ·Șæ·źæž­æčźæžźæž™æčȿ蟿žŸæžŁæč«æž«æč¶æčæžŸæčƒæžșæčŽæž€æ»żæžæžžæș‚æșȘæș˜æ»‰æș·æ»“æșœæșŻæ»„æșČæ»”滕æșæș„滂æșŸæœæŒ‘çŒæ»Źæ»žæ»ŸæŒżæ»ČæŒ±æ»ŻæŒČ滌"], -["e040","挟挓滷柆æœșæœžæŸæŸ€æœŻæœ›æżłæœ­æŸ‚æœŒæœ˜æŸŽæŸ‘æż‚æœŠæŸłæŸŁæŸĄæŸ€æŸčæż†æŸȘæżŸæż•æżŹæż”æż˜æż±æżźæż›ç€‰ç€‹æżșç€‘ç€ç€æżŸç€›ç€šæœŽç€ç€˜ç€Ÿç€°ç€Ÿç€Čç‘çŁç‚™ç‚’ç‚Żçƒ±ç‚Źç‚žç‚łç‚źçƒŸçƒ‹çƒ"], -["e080","çƒ™ç„‰çƒœç„œç„™ç…„ç…•ç†ˆç…Šç…ąç…Œç…–ç…Źç†ç‡»ç†„ç†•ç†šç†Źç‡—ç†čç†Ÿç‡’ç‡‰ç‡”ç‡Žç‡ ç‡Źç‡§ç‡”ç‡Œç‡č燿爍爐爛爹爭爬爰çˆČçˆ»çˆŒçˆżç‰€ç‰†ç‰‹ç‰˜ç‰Žç‰ŸçŠ‚çŠçŠ‡çŠ’çŠ–çŠąçŠ§çŠčçŠČ狃狆狄狎狒狱狠狡ç‹čç‹·ć€çŒ—çŒŠçŒœçŒ–çŒçŒŽçŒŻçŒ©çŒ„çŒŸçŽçé»˜ç—çȘ獚獰獞獔獻çșçˆçŽłçŽçŽ»ç€ç„çźçžç’ąç…ç‘Żç„çžçČçșç‘•çżç‘Ÿç‘™ç‘ç‘œç‘©ç‘°ç‘Łç‘Ș瑶瑟璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓟ç“Čç“°ç“±ç“žç“·ç”„ç”ƒç”…ç”Œç”Žç”ç”•ç”“ç”žç”Šç”Źç”Œç•„ç•ç•Šç•‰ç•›ç•†ç•šç•©ç•€ç•§ç•«ç•­ç•žç•¶ç–†ç–‡ç•Žç–Šç–‰ç–‚ç–”ç–šç–ç–„ç–Łç—‚ç–łç—ƒç–”ç–œç–žç–Œç–±ç—ç—Šç—’ç—™ç—Łç—žç—Ÿç—ż"], -["e180","痌瘁痰ç—șç—Čç—łç˜‹ç˜ç˜‰ç˜Ÿç˜§ç˜ ç˜Ąç˜ąç˜€ç˜Žç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™Ąç™ąç™šç™©ç™Ș癧癬癰ç™Č癶癞癌皀皃皈皋皎皖皓皙皚皰皎皞çščçšșç›‚ç›ç›–ç›’ç›žç›Ąç›„ç›§ç›Șè˜Żç›»çœˆçœ‡çœ„çœ©çœ€çœžçœ„çœŠçœ›çœ·çœžç‡çšçšç«ç›ç„çżçŸçč瞎瞋瞑瞠瞞瞰瞶çžčçžżçžŒçžœçž»çŸ‡çŸçŸ—çŸšçŸœçŸŁçŸźçŸŒç Œç ’ç€Šç  ç€ȘçĄ…çąŽçĄŽçą†çĄŒçąšçąŒçąŁçą”çąȘçąŻçŁ‘çŁ†çŁ‹çŁ”çąŸçąŒçŁ…çŁŠçŁŹ"], -["e240","çŁ§çŁšçŁœçŁŽç€‡ç€’ç€‘ç€™ç€Źç€«ç„€ç„ ç„—ç„Ÿç„šç„•ç„“ç„șç„żçŠŠçŠçŠ§éœ‹çŠȘ犟犳çŠčçŠșç§‰ç§•ç§§ç§Źç§Ąç§Łçšˆçšçš˜çš™çš çšŸçŠ€çš±çš»çšŸçš·ç©ƒç©—ç©‰ç©Ąç©ąç©©éŸç©°ç©č穜çȘˆçȘ—çȘ•çȘ˜çȘ–çȘ©ç«ˆçȘ°"], -["e280","çȘ¶ç«…ç«„çȘżé‚ƒç«‡ç«Šç«ç«ç«•ç«“ç«™ç«šç«ç«Ąç«ąç«Šç«­ç«°çŹ‚çŹçŹŠçŹ†çŹłçŹ˜çŹ™çŹžçŹ”çŹšçŹ¶ç­ç­șçŹ„ç­çŹ‹ç­Œç­…ç­”ç­„ç­Žç­§ç­°ç­±ç­Źç­źçźçź˜çźŸçźçźœçźšçź‹çź’çźç­çź™çŻ‹çŻçŻŒçŻçźŽçŻ†çŻçŻ©ç°‘ç°”çŻŠçŻ„ç± ç°€ç°‡ç°“çŻłçŻ·ç°—ç°çŻ¶ç°Łç°§ç°Șç°Ÿç°·ç°«ç°œç±Œç±ƒç±”ç±ç±€ç±ç±˜ç±Ÿç±€ç±–ç±„ç±Źç±”çȃçȐçČ€çČ­çČąçČ«çČĄçČšçČłçČČçȱçČźçČčçČœçł€çł…çł‚çł˜çł’çłœçłąéŹ»çłŻçłČ糎糶çłș箆"], -["e340","çŽ‚çŽœçŽ•çŽŠç”…ç”‹çŽźçŽČ玿玔甆申甖甎ç”Čç”šç”źç”ç”Łç¶“ç¶‰ç”›ç¶ç”œç¶›ç¶șç¶źç¶Łç¶”ç·‡ç¶œç¶«çžœç¶ąç¶Żç·œç¶žç¶Ÿç¶°ç·˜ç·ç·€ç·žç·»ç·Čç·Ąçž…çžŠçžŁçžĄçž’çž±çžŸçž‰çž‹çžąçč†çčŠçž»çž”çžčçčƒçž·"], -["e380","çžČçžșçč§çčçč–çčžçč™çčšçččçčȘçč©çčŒçč»çșƒç·•çčœèŸźçčżçșˆçș‰çșŒçș’çșçș“çș”çș–çșŽçș›çșœçŒžçŒșçœ…çœŒçœçœŽçœçœ‘çœ•çœ”çœ˜çœŸçœ çœšçœ©çœ§çœžçŸ‚çŸ†çŸƒçŸˆçŸ‡çŸŒçŸ”çŸžçŸçŸšçŸŁçŸŻçŸČçŸčçŸźçŸ¶çŸžè­±çż…çż†çżŠçż•çż”çżĄçżŠçż©çżłçżčéŁœè€†è€„è€‹è€’è€˜è€™è€œè€Ąè€šè€żè€»èŠè†è’è˜èšèŸèąèšèłèČ聰聶èčèœèżè‚„è‚†è‚…è‚›è‚“è‚šè‚­ć†è‚Źèƒ›èƒ„èƒ™èƒèƒ„èƒšèƒ–è„‰èƒŻèƒ±è„›è„©è„Łè„Żè…‹"], -["e440","éš‹è…†è„Ÿè…“è…‘èƒŒè…±è…źè…„è…Šè…Žè†ƒè†ˆè†Šè†€è†‚è† è†•è†€è†Łè…Ÿè†“è†©è†°è†”è†Ÿè†žè†œè‡€è‡‚è†ș臉臍臑臙臘臈臚臟臠臧è‡șè‡»è‡Ÿèˆèˆ‚èˆ…èˆ‡èˆŠèˆèˆèˆ–èˆ©èˆ«èˆžèˆłè‰€è‰™è‰˜è‰è‰šè‰Ÿè‰€"], -["e480","è‰ąè‰šè‰Șè‰«èˆźè‰±è‰·è‰žè‰ŸèŠèŠ’èŠ«èŠŸèŠ»èŠŹè‹Ąè‹Łè‹Ÿè‹’è‹Žè‹łè‹ș莓范苻è‹č苞茆苜茉苙茔茎茖èŒČ茱荀èŒčèè…èŒŻèŒ«èŒ—èŒ˜èŽ…èŽšèŽȘèŽŸèŽąèŽ–èŒŁèŽŽèŽ‡èŽŠèŒèŽ”èłè”èŽ èŽ‰èŽšèŽè“è«èŽèœèƒè˜è‹èè·è‡è èČèèąè èŽœèžè”†è»è‘­èȘèŒè•šè’„è‘·è‘«è’­è‘źè’‚è‘©è‘†èŹè‘Żè‘čè”è“Šè‘ąè’čè’żè’Ÿè“™è“è’»è“šè“è“è“†è“–è’Ąè”Ąè“żè“Žè”—è”˜è”Źè”Ÿè”•è””è“Œè•€è•Łè•˜è•ˆ"], -["e540","蕁蘂蕋蕕薀薀薈薑薊薚蕭薔薛è—Ș薇薜蕷蕟薐藉è–ș藏è–č藐藕藝藄藜è—č蘊蘓蘋藟è—șè˜†è˜ąè˜šè˜°è˜żè™äč•è™”è™Ÿè™§è™±èš“èšŁèš©èšȘèš‹èšŒèš¶èšŻè›„è›†èš°è›‰è Łèš«è›”è›žè›©è›Ź"], -["e580","è›Ÿè››è›Żèœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœè›čèœŠèœŽèœżèœ·èœ»èœ„èœ©èœšè èŸèžèŒèŽèŽè—èšèźè™è“èŁèȘè …èžąèžŸèž‚èžŻèŸ‹èžœèŸ€èŸé›–èž«èŸ„èžłèŸ‡èŸ†èž»èŸŻèŸČèŸ è è èŸŸèŸ¶èŸ·è ŽèŸ’è ‘è –è •è ąè Ąè ±è ¶è čè §è »èĄ„èĄ‚èĄ’èĄ™èĄžèĄąèĄ«èąèĄŸèąžèĄ”èĄœèą”èĄČèą‚èą—èą’èąźèą™èąąèąèą€èą°èążèą±èŁƒèŁ„èŁ”èŁ˜èŁ™èŁèŁčè€‚èŁŒèŁŽèŁšèŁČ耄而耊耓脃耞耄è€Ș耫脁脄耻耶耞脌耝脠脞"], -["e640","脊脀脭è„Șè„Żè„Žè„·è„ŸèŠƒèŠˆèŠŠèŠ“èŠ˜èŠĄèŠ©èŠŠèŠŹèŠŻèŠČèŠșèŠœèŠżè§€è§šè§œè§è§§è§Žè§žèšƒèš–èšèšŒèš›èšèš„èš¶è©è©›è©’è©†è©ˆè©Œè©­è©Źè©ąèȘ…èȘ‚èȘ„èȘšèȘĄèȘ‘èȘ„èȘŠèȘšèȘŁè«„è«è«‚è«šè««è«łè«§"], -["e680","è«€è«±èŹ”è« è«ąè«·è«žè«›èŹŒèŹ‡èŹšè«ĄèŹ–èŹèŹ—èŹ èŹłéž«èŹŠèŹ«èŹŸèŹšè­è­Œè­è­Žè­‰è­–è­›è­šè­«è­Ÿè­Źè­Żè­Žè­œèź€èźŒèźŽèź’èź“èź–èź™èźšè°șè±è°żè±ˆè±Œè±Žè±è±•è±ąè±Źè±žè±șèȂèȉèȅèȊèȍèȎèČ”è±ŒèČ˜æˆèČ­èČȘèČœèČČèČłèČźèČ¶èłˆèłèł€èłŁèłšèłœèłșèł»èŽ„èŽ…èŽŠèŽ‡èŽèŽèŽéœŽèŽ“èłèŽ”èŽ–è”§è”­è”±è”łè¶è¶™è·‚è¶Ÿè¶ș跏跚跖跌跛跋è·Șè·«è·Ÿè·Łè·Œèžˆèž‰è·żèžèžžèžèžŸèč‚èž”螰螎èčŠ"], -["e740","èč‡èč‰èčŒèčèčˆèč™èč€èč èžȘèčŁèč•èč¶èčČèčŒèșèș‡èș…èș„èș‹èșŠèș“èș‘èș”èș™èșȘèșĄèșŹèș°è»†èș±èșŸè»…è»ˆè»‹è»›è»Łè»Œè»»è»«è»ŸèŒŠèŒ…èŒ•èŒ’èŒ™èŒ“èŒœèŒŸèŒ›èŒŒèŒŠèŒłèŒ»èŒč蜅蜂茟蜌蜉蜆蜎蜗蜜"], -["e780","èœąèœŁèœ€èŸœèŸŸèŸŁèŸ­èŸŻèŸ·èżšèż„èżąèżȘèżŻé‚‡èżŽé€…èżčèżșé€‘é€•é€Ąé€é€žé€–é€‹é€§é€¶é€”é€čèżžééé‘é’é€Žé‰é€Ÿé–é˜éžéšéŻé¶éššéČé‚‚éœé‚é‚€é‚Šé‚‰é‚é‚šé‚Żé‚±é‚”éƒąéƒ€æ‰ˆéƒ›é„‚é„’é„™é„Čé„°é…Šé…–é…˜é…Łé…„é…©é…łé…Č醋醉醂醹醫醯é†Ș醔醎é†șé‡€é‡é‡‰é‡‹é‡é‡–é‡Ÿé‡Ąé‡›é‡Œé‡”é‡¶éˆžé‡żéˆ”éˆŹéˆ•éˆ‘é‰žé‰—é‰…é‰‰é‰€é‰ˆéŠ•éˆżé‰‹é‰éŠœéŠ–éŠ“éŠ›é‰šé‹éŠč銷鋩錏é‹ș鍄錼"], -["e840","錙錱錚錣éŒșéŒ”éŒ»éœé éŒéźé–éŽ°éŽŹéŽ­éŽ”éŽčé–é—éšé„é˜éƒéééˆé€éšé”é“éƒé‡éé¶é«é”éĄéș鑁鑒鑄鑛鑠鑱鑞é‘Șéˆ©é‘°é‘”é‘·é‘œé‘šé‘Œé‘Ÿé’é‘żé–‚é–‡é–Šé–”é––é–˜é–™"], -["e880","閠閚閧閭閌閻é–čé–Ÿé—Šæż¶é—ƒé—é—Œé—•é—”é—–é—œé—Ąé—„é—ąé˜Ąé˜šé˜źé˜Żé™‚é™Œé™é™‹é™·é™œé™žé™é™Ÿé™Šé™Č陬隍隘隕隗éšȘ隧隱éšČ隰階隶隞éšč雎雋雉雍脍雜霍雕é›č霄霆霈霓霎霑霏霖霙需éœȘ霰éœčéœœéœŸé„é†éˆé‚é‰éœé é€éŠéšć‹’é«é±éč鞅靌鞁éșéž†éž‹éžéžéžœéžšéžŠéžŁéžłéžŽéŸƒéŸ†éŸˆéŸ‹éŸœéŸ­éœéŸČç«ŸéŸ¶éŸ”é é Œé žé €é Ąé ·é œéĄ†éĄéĄ‹éĄ«éĄŻéĄ°"], -["e940","饱饎饳éąȘéąŻéą±éą¶éŁ„éŁƒéŁ†éŁ©éŁ«é€ƒé€‰é€’é€”é€˜é€Ąé€é€žé€€é€ é€Źé€źé€œé€Ÿé„‚é„‰é„…é„é„‹é„‘é„’é„Œé„•éŠ—éŠ˜éŠ„éŠ­éŠźéŠŒé§Ÿé§›é§é§˜é§‘é§­é§źé§±é§Čé§»é§žéšéšéš…é§ąéš™éš«éš·é©…é©‚é©€é©ƒ"], -["e980","éšŸé©•é©é©›é©—é©Ÿé©ąé©„é©€é©©é©«é©ȘéȘ­éȘ°éȘŒé«€é«é«‘é«“é«”é«žé«Ÿé«ąé«Łé«Šé«Żé««é«źé«Žé«±é«·é«»éŹ†éŹ˜éŹšéŹŸéŹąéŹŁéŹ„éŹ§éŹšéŹ©éŹȘ鏟鏯éŹČ魄魃魏魍魎魑魘魮鼓鼃鼑鼖鼗鼟鼠鼹鼮鯀鯊éźčéŻ†éŻéŻ‘éŻ’éŻŁéŻąéŻ€éŻ”éŻĄé°șéŻČéŻ±éŻ°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°źé°›é°„é°€é°Ąé°°é±‡é°Čé±†é°Ÿé±šé± é±§é±¶é±žéł§éłŹéł°éŽ‰éŽˆéł«éŽƒéŽ†éŽȘéŽŠé¶ŻéŽŁéŽŸé”„éŽ•éŽ’é”éŽżéŽŸé”†é”ˆ"], -["ea40","锝锞销锑锐错é”Č鶉鶇鶫锯é”ș鶚鶀鶩é¶Č鷄鷁鶻鶞é¶șé·†é·é·‚é·™é·“é·žé·Šé·­é·Żé·œéžšéž›éžžéč”éččéčœéșéșˆéș‹éșŒéș’éș•éș‘éșéș„éș©éșžéșȘéș­éĄé»Œé»Žé»é»é»”黜點黝黠黄黚黯"], -["ea80","黎黶黷é»čé»»é»Œé»œéŒ‡éŒˆçš·éŒ•éŒĄéŒŹéŒŸéœŠéœ’éœ”éœŁéœŸéœ éœĄéœŠéœ§éœŹéœȘ霷éœČéœ¶éŸ•éŸœéŸ ć Żæ§‡é™ç‘€ć‡œç†™"], -["ed40","çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Šć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïš"], -["ed80","ïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Żæ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±"], -["ee40","çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄșç€°ïš˜ïš™ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™"], -["ee80","è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡šé‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™é«œé­”é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"], -["eeef","ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚"], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"ïżąïż€ïŒ‡ïŒ‚ăˆ±â„–â„Ąâˆ”çșŠè€œéˆéŠˆè“œäż‰ç‚»æ˜±æŁˆé‹čæ›»ćœ…äžšä»Ąä»ŒäŒ€äŒƒäŒčäœ–äŸ’äŸŠäŸšäŸ”äżć€ć€ąäżżć€žć†ć°ć‚ć‚”ćƒŽćƒ˜ć…Š"], -["fa80","ć…€ć†ć†Ÿć‡Źćˆ•ćŠœćŠŠć‹€ć‹›ćŒ€ćŒ‡ćŒ€ćČ掓ćŽČćïšŽć’œć’Šć’©ć“żć–†ć™ć„ćžŹćŸˆćŸ‡ïšïšćąžćąČć€‹ć„“ć„›ć„ć„ŁćŠ€ćŠș歖毀甯毘毬氞ćČŠćČșćł”ćŽ§ć”“ïš‘ć”‚ć”­ć¶žć¶čć·ćŒĄćŒŽćœ§ćŸ·ćżžææ‚…æ‚Šæƒžæƒ•æ„ æƒČæ„‘æ„·æ„°æ†˜æˆ“æŠŠæ”æ‘ æ’æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜źæ˜žæ˜€æ™„æ™—æ™™ïš’æ™łæš™æš æšČæšżæ›șæœŽï€©æŠæž»æĄ’æŸ€æ æĄ„æŁïš“æ„šïš”æŠ˜æ§ąæš°æ©«æ©†æ©łæ©Ÿæ«ąæ«€æŻ–æ°żæ±œæČ†æ±ŻæłšæŽ„æ¶‡æ”Ż"], -["fb40","æ¶–æ¶Źæ·æ·žæ·Čæ·Œæžčæčœæž§æžŒæșżæŸˆæŸ”æż”ç€…ç€‡ç€šç‚…ç‚«ç„ç„„ç…œç…†ç…‡ïš•ç‡ç‡ŸçŠ±çŠŸçŒ€ïš–ç·çŽœç‰ç–çŁç’ç‡ç”çŠçȘç©çźç‘ąç’‰ç’Ÿç”ç•Żçš‚çšœçšžçš›çšŠïš—ç†ćŠŻç ĄçĄŽçĄ€çĄș瀰"], -["fb80","ïššçŠ”ïš›çŠ›ç«‘ç«§ïšœç««çźžïšç”ˆç”œç¶·ç¶ ç·–çč’çœ‡çŸĄïšžèŒèąèżè‡è¶è‘ˆè’Žè•“è•™è•«ïšŸè–°ïš ïšĄè ‡èŁ”èš’èš·è©čèȘ§èȘŸè«Ÿïšąè«¶è­“è­żèł°èłŽèŽ’è”¶ïšŁè»ïš€ïš„é§éƒžïšŠé„•é„§é‡šé‡—é‡žé‡­é‡źé‡€é‡„éˆ†éˆéˆŠéˆș鉀鈌鉎鉙鉑éˆčé‰§éŠ§é‰·é‰žé‹§é‹—é‹™é‹ïš§é‹•é‹ é‹“éŒ„éŒĄé‹»ïššéŒžé‹żéŒéŒ‚é°é—éŽ€é†éžéžé±é‘…é‘ˆé–’ï§œïš©éšéšŻéœłéœ»éƒééé‘é•éĄ—éĄ„ïšȘïš«é€§ïšŹéŠžé©Žé«™"], -["fc40","髜魔é­Čéźéź±éź»é°€é”°é”«ïš­éž™é»‘"] -] diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js deleted file mode 100644 index 97d0669..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js +++ /dev/null @@ -1,197 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js - -// == UTF16-BE codec. ========================================================== - -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} - -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf16BEEncoder() { -} - -Utf16BEEncoder.prototype.write = function(str) { - var buf = Buffer.from(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; - } - return buf; -} - -Utf16BEEncoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf16BEDecoder() { - this.overflowByte = -1; -} - -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; - - var buf2 = Buffer.alloc(buf.length + 1), - i = 0, j = 0; - - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; - } - - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; - } - - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - - return buf2.slice(0, j).toString('ucs2'); -} - -Utf16BEDecoder.prototype.end = function() { - this.overflowByte = -1; -} - - -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). - -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; -} - -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; - - -// -- Encoding (pass-through) - -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); -} - -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} - -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} - - -// -- Decoding - -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -} - -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - return this.decoder.end(); -} - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 2) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; - if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; - } - - if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; - if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; - if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-16le'; -} - - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf32.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf32.js deleted file mode 100644 index 2fa900a..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf32.js +++ /dev/null @@ -1,319 +0,0 @@ -'use strict'; - -var Buffer = require('safer-buffer').Buffer; - -// == UTF32-LE/BE codec. ========================================================== - -exports._utf32 = Utf32Codec; - -function Utf32Codec(codecOptions, iconv) { - this.iconv = iconv; - this.bomAware = true; - this.isLE = codecOptions.isLE; -} - -exports.utf32le = { type: '_utf32', isLE: true }; -exports.utf32be = { type: '_utf32', isLE: false }; - -// Aliases -exports.ucs4le = 'utf32le'; -exports.ucs4be = 'utf32be'; - -Utf32Codec.prototype.encoder = Utf32Encoder; -Utf32Codec.prototype.decoder = Utf32Decoder; - -// -- Encoding - -function Utf32Encoder(options, codec) { - this.isLE = codec.isLE; - this.highSurrogate = 0; -} - -Utf32Encoder.prototype.write = function(str) { - var src = Buffer.from(str, 'ucs2'); - var dst = Buffer.alloc(src.length * 2); - var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; - var offset = 0; - - for (var i = 0; i < src.length; i += 2) { - var code = src.readUInt16LE(i); - var isHighSurrogate = (0xD800 <= code && code < 0xDC00); - var isLowSurrogate = (0xDC00 <= code && code < 0xE000); - - if (this.highSurrogate) { - if (isHighSurrogate || !isLowSurrogate) { - // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low - // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character - // (technically wrong, but expected by some applications, like Windows file names). - write32.call(dst, this.highSurrogate, offset); - offset += 4; - } - else { - // Create 32-bit value from high and low surrogates; - var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000; - - write32.call(dst, codepoint, offset); - offset += 4; - this.highSurrogate = 0; - - continue; - } - } - - if (isHighSurrogate) - this.highSurrogate = code; - else { - // Even if the current character is a low surrogate, with no previous high surrogate, we'll - // encode it as a semi-invalid stand-alone character for the same reasons expressed above for - // unpaired high surrogates. - write32.call(dst, code, offset); - offset += 4; - this.highSurrogate = 0; - } - } - - if (offset < dst.length) - dst = dst.slice(0, offset); - - return dst; -}; - -Utf32Encoder.prototype.end = function() { - // Treat any leftover high surrogate as a semi-valid independent character. - if (!this.highSurrogate) - return; - - var buf = Buffer.alloc(4); - - if (this.isLE) - buf.writeUInt32LE(this.highSurrogate, 0); - else - buf.writeUInt32BE(this.highSurrogate, 0); - - this.highSurrogate = 0; - - return buf; -}; - -// -- Decoding - -function Utf32Decoder(options, codec) { - this.isLE = codec.isLE; - this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); - this.overflow = []; -} - -Utf32Decoder.prototype.write = function(src) { - if (src.length === 0) - return ''; - - var i = 0; - var codepoint = 0; - var dst = Buffer.alloc(src.length + 4); - var offset = 0; - var isLE = this.isLE; - var overflow = this.overflow; - var badChar = this.badChar; - - if (overflow.length > 0) { - for (; i < src.length && overflow.length < 4; i++) - overflow.push(src[i]); - - if (overflow.length === 4) { - // NOTE: codepoint is a signed int32 and can be negative. - // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). - if (isLE) { - codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24); - } else { - codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24); - } - overflow.length = 0; - - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - } - - // Main loop. Should be as optimized as possible. - for (; i < src.length - 3; i += 4) { - // NOTE: codepoint is a signed int32 and can be negative. - if (isLE) { - codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24); - } else { - codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24); - } - offset = _writeCodepoint(dst, offset, codepoint, badChar); - } - - // Keep overflowing bytes. - for (; i < src.length; i++) { - overflow.push(src[i]); - } - - return dst.slice(0, offset).toString('ucs2'); -}; - -function _writeCodepoint(dst, offset, codepoint, badChar) { - // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. - if (codepoint < 0 || codepoint > 0x10FFFF) { - // Not a valid Unicode codepoint - codepoint = badChar; - } - - // Ephemeral Planes: Write high surrogate. - if (codepoint >= 0x10000) { - codepoint -= 0x10000; - - var high = 0xD800 | (codepoint >> 10); - dst[offset++] = high & 0xff; - dst[offset++] = high >> 8; - - // Low surrogate is written below. - var codepoint = 0xDC00 | (codepoint & 0x3FF); - } - - // Write BMP char or low surrogate. - dst[offset++] = codepoint & 0xff; - dst[offset++] = codepoint >> 8; - - return offset; -}; - -Utf32Decoder.prototype.end = function() { - this.overflow.length = 0; -}; - -// == UTF-32 Auto codec ============================================================= -// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. -// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 -// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); - -// Encoder prepends BOM (which can be overridden with (addBOM: false}). - -exports.utf32 = Utf32AutoCodec; -exports.ucs4 = 'utf32'; - -function Utf32AutoCodec(options, iconv) { - this.iconv = iconv; -} - -Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; -Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; - -// -- Encoding - -function Utf32AutoEncoder(options, codec) { - options = options || {}; - - if (options.addBOM === undefined) - options.addBOM = true; - - this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options); -} - -Utf32AutoEncoder.prototype.write = function(str) { - return this.encoder.write(str); -}; - -Utf32AutoEncoder.prototype.end = function() { - return this.encoder.end(); -}; - -// -- Decoding - -function Utf32AutoDecoder(options, codec) { - this.decoder = null; - this.initialBufs = []; - this.initialBufsLen = 0; - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf32AutoDecoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBufs.push(buf); - this.initialBufsLen += buf.length; - - if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.write(buf); -}; - -Utf32AutoDecoder.prototype.end = function() { - if (!this.decoder) { - var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var resStr = ''; - for (var i = 0; i < this.initialBufs.length; i++) - resStr += this.decoder.write(this.initialBufs[i]); - - var trail = this.decoder.end(); - if (trail) - resStr += trail; - - this.initialBufs.length = this.initialBufsLen = 0; - return resStr; - } - - return this.decoder.end(); -}; - -function detectEncoding(bufs, defaultEncoding) { - var b = []; - var charsProcessed = 0; - var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE. - var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE. - - outer_loop: - for (var i = 0; i < bufs.length; i++) { - var buf = bufs[i]; - for (var j = 0; j < buf.length; j++) { - b.push(buf[j]); - if (b.length === 4) { - if (charsProcessed === 0) { - // Check BOM first. - if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { - return 'utf-32le'; - } - if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { - return 'utf-32be'; - } - } - - if (b[0] !== 0 || b[1] > 0x10) invalidBE++; - if (b[3] !== 0 || b[2] > 0x10) invalidLE++; - - if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; - if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; - - b.length = 0; - charsProcessed++; - - if (charsProcessed >= 100) { - break outer_loop; - } - } - } - } - - // Make decisions. - if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be'; - if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le'; - - // Couldn't decide (likely all zeros or not enough data). - return defaultEncoding || 'utf-32le'; -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js deleted file mode 100644 index eacae34..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js +++ /dev/null @@ -1,290 +0,0 @@ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; - - -// -- Encoding - -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; - -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} - -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); -} - -Utf7Encoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); - -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. - - -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = Buffer.alloc(6); - this.base64AccumIdx = 0; -} - -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; - - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; - } - - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; - } - - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; - - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; - } - } - } - } - - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; - - return buf.slice(0, bufIdx); -} - -Utf7IMAPEncoder.prototype.end = function() { - var buf = Buffer.alloc(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; - } - - return buf.slice(0, bufIdx); -} - - -// -- Decoding - -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; - -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js deleted file mode 100644 index 1050872..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -var BOMChar = '\uFEFF'; - -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; -} - -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; - } - - return this.encoder.write(str); -} - -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); -} - - -//------------------------------------------------------------------------------ - -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; -} - -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; - - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); - } - - this.pass = true; - return res; -} - -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); -} - diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.d.ts b/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.d.ts deleted file mode 100644 index 99f200f..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - * REQUIREMENT: This definition is dependent on the @types/node definition. - * Install with `npm install @types/node --save-dev` - *--------------------------------------------------------------------------------------------*/ - -declare module 'iconv-lite' { - // Basic API - export function decode(buffer: Buffer, encoding: string, options?: Options): string; - - export function encode(content: string, encoding: string, options?: Options): Buffer; - - export function encodingExists(encoding: string): boolean; - - // Stream API - export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - // Low-level stream APIs - export function getEncoder(encoding: string, options?: Options): EncoderStream; - - export function getDecoder(encoding: string, options?: Options): DecoderStream; -} - -export interface Options { - stripBOM?: boolean; - addBOM?: boolean; - defaultEncoding?: string; -} - -export interface EncoderStream { - write(str: string): Buffer; - end(): Buffer | undefined; -} - -export interface DecoderStream { - write(buf: Buffer): string; - end(): string | undefined; -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.js deleted file mode 100644 index 657701c..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/index.js +++ /dev/null @@ -1,180 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -var bomHandling = require("./bom-handling"), - iconv = module.exports; - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; - -// Characters emitted in case of error. -iconv.defaultCharUnicode = 'ïżœ'; -iconv.defaultCharSingleByte = '?'; - -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. - - var encoder = iconv.getEncoder(encoding, options); - - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} - -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } - - buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. - } - - var decoder = iconv.getDecoder(encoding, options); - - var res = decoder.write(buf); - var trail = decoder.end(); - - return trail ? (res + trail) : res; -} - -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} - -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; - -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = iconv._canonicalizeEncoding(encoding); - - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; - - var codecDef = iconv.encodings[enc]; - - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; - - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; - - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; - - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); - - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; - - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} - -iconv._canonicalizeEncoding = function(encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); -} - -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); - - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); - - return encoder; -} - -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); - - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); - - return decoder; -} - -// Streaming API -// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add -// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. -// If you would like to enable it explicitly, please add the following code to your app: -// > iconv.enableStreamingAPI(require('stream')); -iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { - if (iconv.supportsStreams) - return; - - // Dependency-inject stream module to create IconvLite stream classes. - var streams = require("./streams")(stream_module); - - // Not public API yet, but expose the stream classes. - iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; - - // Streaming API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); - } - - iconv.decodeStream = function decodeStream(encoding, options) { - return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); - } - - iconv.supportsStreams = true; -} - -// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). -var stream_module; -try { - stream_module = require("stream"); -} catch (e) {} - -if (stream_module && stream_module.Transform) { - iconv.enableStreamingAPI(stream_module); - -} else { - // In rare cases where 'stream' module is not available by default, throw a helpful exception. - iconv.encodeStream = iconv.decodeStream = function() { - throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); - }; -} - -if ("Ā" != "\u0100") { - console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); -} diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/streams.js b/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/streams.js deleted file mode 100644 index a150648..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/lib/streams.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; - -var Buffer = require("safer-buffer").Buffer; - -// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), -// we opt to dependency-inject it instead of creating a hard dependency. -module.exports = function(stream_module) { - var Transform = stream_module.Transform; - - // == Encoder stream ======================================================= - - function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); - } - - IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } - }); - - IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; - } - - - // == Decoder stream ======================================================= - - function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); - } - - IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } - }); - - IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } - } - - IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; - } - - return { - IconvLiteEncoderStream: IconvLiteEncoderStream, - IconvLiteDecoderStream: IconvLiteDecoderStream, - }; -}; diff --git a/mcp/node_modules/raw-body/node_modules/iconv-lite/package.json b/mcp/node_modules/raw-body/node_modules/iconv-lite/package.json deleted file mode 100644 index d351115..0000000 --- a/mcp/node_modules/raw-body/node_modules/iconv-lite/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "iconv-lite", - "description": "Convert character encodings in pure javascript.", - "version": "0.6.3", - "license": "MIT", - "keywords": [ - "iconv", - "convert", - "charset", - "icu" - ], - "author": "Alexander Shtuchkin ", - "main": "./lib/index.js", - "typings": "./lib/index.d.ts", - "homepage": "https://github.com/ashtuchkin/iconv-lite", - "bugs": "https://github.com/ashtuchkin/iconv-lite/issues", - "repository": { - "type": "git", - "url": "git://github.com/ashtuchkin/iconv-lite.git" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "coverage": "c8 _mocha --grep .", - "test": "mocha --reporter spec --grep ." - }, - "browser": { - "stream": false - }, - "devDependencies": { - "async": "^3.2.0", - "c8": "^7.2.0", - "errto": "^0.2.1", - "iconv": "^2.3.5", - "mocha": "^3.5.3", - "request": "^2.88.2", - "semver": "^6.3.0", - "unorm": "^1.6.0" - }, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } -} diff --git a/mcp/node_modules/router/node_modules/debug/LICENSE b/mcp/node_modules/router/node_modules/debug/LICENSE deleted file mode 100644 index 1a9820e..0000000 --- a/mcp/node_modules/router/node_modules/debug/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/mcp/node_modules/router/node_modules/debug/README.md b/mcp/node_modules/router/node_modules/debug/README.md deleted file mode 100644 index 9ebdfbf..0000000 --- a/mcp/node_modules/router/node_modules/debug/README.md +++ /dev/null @@ -1,481 +0,0 @@ -# debug -[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) - - - -A tiny JavaScript debugging utility modelled after Node.js core's debugging -technique. Works in Node.js and web browsers. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - -`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. - -Example [_app.js_](./examples/node/app.js): - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %o', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example [_worker.js_](./examples/node/worker.js): - -```js -var a = require('debug')('worker:a') - , b = require('debug')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); -``` - -The `DEBUG` environment variable is then used to enable these based on space or -comma-delimited names. - -Here are some examples: - -screen shot 2017-08-08 at 12 53 04 pm -screen shot 2017-08-08 at 12 53 38 pm -screen shot 2017-08-08 at 12 53 25 pm - -#### Windows command prompt notes - -##### CMD - -On Windows the environment variable is set using the `set` command. - -```cmd -set DEBUG=*,-not_this -``` - -Example: - -```cmd -set DEBUG=* & node app.js -``` - -##### PowerShell (VS Code default) - -PowerShell uses different syntax to set environment variables. - -```cmd -$env:DEBUG = "*,-not_this" -``` - -Example: - -```cmd -$env:DEBUG='app';node app.js -``` - -Then, run the program to be debugged as usual. - -npm script example: -```js - "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", -``` - -## Namespace Colors - -Every debug instance has a color generated for it based on its namespace name. -This helps when visually parsing the debug output to identify which debug instance -a debug line belongs to. - -#### Node.js - -In Node.js, colors are enabled when stderr is a TTY. You also _should_ install -the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, -otherwise debug will only use a small handful of basic colors. - - - -#### Web Browser - -Colors are also enabled on "Web Inspectors" that understand the `%c` formatting -option. These are WebKit web inspectors, Firefox ([since version -31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) -and the Firebug plugin for Firefox (any version). - - - - -## Millisecond diff - -When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - - -When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: - - - - -## Conventions - -If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. - -## Wildcards - -The `*` character may be used as a wildcard. Suppose for example your library has -debuggers named "connect:bodyParser", "connect:compress", "connect:session", -instead of listing all three with -`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do -`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - -You can also exclude specific debuggers by prefixing them with a "-" character. -For example, `DEBUG=*,-connect:*` would include all debuggers except those -starting with "connect:". - -## Environment Variables - -When running through Node.js, you can set a few environment variables that will -change the behavior of the debug logging: - -| Name | Purpose | -|-----------|-------------------------------------------------| -| `DEBUG` | Enables/disables specific debugging namespaces. | -| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | -| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | -| `DEBUG_DEPTH` | Object inspection depth. | -| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | - - -__Note:__ The environment variables beginning with `DEBUG_` end up being -converted into an Options object that gets used with `%o`/`%O` formatters. -See the Node.js documentation for -[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) -for the complete list. - -## Formatters - -Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. -Below are the officially supported formatters: - -| Formatter | Representation | -|-----------|----------------| -| `%O` | Pretty-print an Object on multiple lines. | -| `%o` | Pretty-print an Object all on a single line. | -| `%s` | String. | -| `%d` | Number (both integer and float). | -| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | -| `%%` | Single percent sign ('%'). This does not consume an argument. | - - -### Custom formatters - -You can add custom formatters by extending the `debug.formatters` object. -For example, if you wanted to add support for rendering a Buffer as hex with -`%h`, you could do something like: - -```js -const createDebug = require('debug') -createDebug.formatters.h = (v) => { - return v.toString('hex') -} - -// 
elsewhere -const debug = createDebug('foo') -debug('this is hex: %h', new Buffer('hello world')) -// foo this is hex: 68656c6c6f20776f726c6421 +0ms -``` - - -## Browser Support - -You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), -or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), -if you don't want to build it yourself. - -Debug's enable state is currently persisted by `localStorage`. -Consider the situation shown below where you have `worker:a` and `worker:b`, -and wish to debug both. You can enable this using `localStorage.debug`: - -```js -localStorage.debug = 'worker:*' -``` - -And then refresh the page. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. - - - -## Output streams - - By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: - -Example [_stdout.js_](./examples/node/stdout.js): - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -## Extend -You can simply extend debugger -```js -const log = require('debug')('auth'); - -//creates new debug instance with extended namespace -const logSign = log.extend('sign'); -const logLogin = log.extend('login'); - -log('hello'); // auth hello -logSign('hello'); //auth:sign hello -logLogin('hello'); //auth:login hello -``` - -## Set dynamically - -You can also enable debug dynamically by calling the `enable()` method : - -```js -let debug = require('debug'); - -console.log(1, debug.enabled('test')); - -debug.enable('test'); -console.log(2, debug.enabled('test')); - -debug.disable(); -console.log(3, debug.enabled('test')); - -``` - -print : -``` -1 false -2 true -3 false -``` - -Usage : -`enable(namespaces)` -`namespaces` can include modes separated by a colon and wildcards. - -Note that calling `enable()` completely overrides previously set DEBUG variable : - -``` -$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' -=> false -``` - -`disable()` - -Will disable all namespaces. The functions returns the namespaces currently -enabled (and skipped). This can be useful if you want to disable debugging -temporarily without knowing what was enabled to begin with. - -For example: - -```js -let debug = require('debug'); -debug.enable('foo:*,-foo:bar'); -let namespaces = debug.disable(); -debug.enable(namespaces); -``` - -Note: There is no guarantee that the string will be identical to the initial -enable string, but semantically they will be identical. - -## Checking whether a debug target is enabled - -After you've created a debug instance, you can determine whether or not it is -enabled by checking the `enabled` property: - -```javascript -const debug = require('debug')('http'); - -if (debug.enabled) { - // do stuff... -} -``` - -You can also manually toggle this property to force the debug instance to be -enabled or disabled. - -## Usage in child processes - -Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. -For example: - -```javascript -worker = fork(WORKER_WRAP_PATH, [workerPath], { - stdio: [ - /* stdin: */ 0, - /* stdout: */ 'pipe', - /* stderr: */ 'pipe', - 'ipc', - ], - env: Object.assign({}, process.env, { - DEBUG_COLORS: 1 // without this settings, colors won't be shown - }), -}); - -worker.stderr.pipe(process.stderr, { end: false }); -``` - - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - - Andrew Rhyne - - Josh Junon - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/router/node_modules/debug/package.json b/mcp/node_modules/router/node_modules/debug/package.json deleted file mode 100644 index 60dfcf5..0000000 --- a/mcp/node_modules/router/node_modules/debug/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "debug", - "version": "4.4.0", - "repository": { - "type": "git", - "url": "git://github.com/debug-js/debug.git" - }, - "description": "Lightweight debugging utility for Node.js and the browser", - "keywords": [ - "debug", - "log", - "debugger" - ], - "files": [ - "src", - "LICENSE", - "README.md" - ], - "author": "Josh Junon (https://github.com/qix-)", - "contributors": [ - "TJ Holowaychuk ", - "Nathan Rajlich (http://n8.io)", - "Andrew Rhyne " - ], - "license": "MIT", - "scripts": { - "lint": "xo", - "test": "npm run test:node && npm run test:browser && npm run lint", - "test:node": "istanbul cover _mocha -- test.js test.node.js", - "test:browser": "karma start --single-run", - "test:coverage": "cat ./coverage/lcov.info | coveralls" - }, - "dependencies": { - "ms": "^2.1.3" - }, - "devDependencies": { - "brfs": "^2.0.1", - "browserify": "^16.2.3", - "coveralls": "^3.0.2", - "istanbul": "^0.4.5", - "karma": "^3.1.4", - "karma-browserify": "^6.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-mocha": "^1.3.0", - "mocha": "^5.2.0", - "mocha-lcov-reporter": "^1.2.0", - "sinon": "^14.0.0", - "xo": "^0.23.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - }, - "main": "./src/index.js", - "browser": "./src/browser.js", - "engines": { - "node": ">=6.0" - }, - "xo": { - "rules": { - "import/extensions": "off" - } - } -} diff --git a/mcp/node_modules/router/node_modules/debug/src/browser.js b/mcp/node_modules/router/node_modules/debug/src/browser.js deleted file mode 100644 index df8e179..0000000 --- a/mcp/node_modules/router/node_modules/debug/src/browser.js +++ /dev/null @@ -1,272 +0,0 @@ -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); -exports.destroy = (() => { - let warned = false; - - return () => { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -})(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - let m; - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - // eslint-disable-next-line no-return-assign - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ -exports.log = console.debug || console.log || (() => {}); - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; diff --git a/mcp/node_modules/router/node_modules/debug/src/common.js b/mcp/node_modules/router/node_modules/debug/src/common.js deleted file mode 100644 index 528c7ec..0000000 --- a/mcp/node_modules/router/node_modules/debug/src/common.js +++ /dev/null @@ -1,292 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = require('ms'); - createDebug.destroy = destroy; - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: v => { - enableOverride = v; - } - }); - - // Env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - - createDebug.names = []; - createDebug.skips = []; - - const split = (typeof namespaces === 'string' ? namespaces : '') - .trim() - .replace(' ', ',') - .split(',') - .filter(Boolean); - - for (const ns of split) { - if (ns[0] === '-') { - createDebug.skips.push(ns.slice(1)); - } else { - createDebug.names.push(ns); - } - } - } - - /** - * Checks if the given string matches a namespace template, honoring - * asterisks as wildcards. - * - * @param {String} search - * @param {String} template - * @return {Boolean} - */ - function matchesTemplate(search, template) { - let searchIndex = 0; - let templateIndex = 0; - let starIndex = -1; - let matchIndex = 0; - - while (searchIndex < search.length) { - if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { - // Match character or proceed with wildcard - if (template[templateIndex] === '*') { - starIndex = templateIndex; - matchIndex = searchIndex; - templateIndex++; // Skip the '*' - } else { - searchIndex++; - templateIndex++; - } - } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition - // Backtrack to the last '*' and try to match more characters - templateIndex = starIndex + 1; - matchIndex++; - searchIndex = matchIndex; - } else { - return false; // No match - } - } - - // Handle trailing '*' in template - while (templateIndex < template.length && template[templateIndex] === '*') { - templateIndex++; - } - - return templateIndex === template.length; - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names, - ...createDebug.skips.map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - for (const skip of createDebug.skips) { - if (matchesTemplate(name, skip)) { - return false; - } - } - - for (const ns of createDebug.names) { - if (matchesTemplate(name, ns)) { - return true; - } - } - - return false; - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; diff --git a/mcp/node_modules/router/node_modules/debug/src/index.js b/mcp/node_modules/router/node_modules/debug/src/index.js deleted file mode 100644 index bf4c57f..0000000 --- a/mcp/node_modules/router/node_modules/debug/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = require('./browser.js'); -} else { - module.exports = require('./node.js'); -} diff --git a/mcp/node_modules/router/node_modules/debug/src/node.js b/mcp/node_modules/router/node_modules/debug/src/node.js deleted file mode 100644 index 715560a..0000000 --- a/mcp/node_modules/router/node_modules/debug/src/node.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Module dependencies. - */ - -const tty = require('tty'); -const util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - */ - -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.destroy = util.deprecate( - () => {}, - 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' -); - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = require('supports-color'); - - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); - - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - const {namespace: name, useColors} = this; - - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} - -/** - * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. - */ - -function log(...args) { - return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init(debug) { - debug.inspectOpts = {}; - - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -module.exports = require('./common')(exports); - -const {formatters} = module.exports; - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n') - .map(str => str.trim()) - .join(' '); -}; - -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ - -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; diff --git a/mcp/node_modules/router/node_modules/ms/index.js b/mcp/node_modules/router/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/mcp/node_modules/router/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/mcp/node_modules/router/node_modules/ms/license.md b/mcp/node_modules/router/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/mcp/node_modules/router/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/mcp/node_modules/router/node_modules/ms/package.json b/mcp/node_modules/router/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/mcp/node_modules/router/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/mcp/node_modules/router/node_modules/ms/readme.md b/mcp/node_modules/router/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/mcp/node_modules/router/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/mcp/node_modules/send/HISTORY.md b/mcp/node_modules/send/HISTORY.md index 0dd29d0..958b934 100644 --- a/mcp/node_modules/send/HISTORY.md +++ b/mcp/node_modules/send/HISTORY.md @@ -1,3 +1,57 @@ +1.2.0 / 2025-03-27 +================== + + * deps: + * `mime-types@^3.0.1` + * `fresh@^2.0.0` + * removed `destroy` + * remove `getHeaderNames()` polyfill and refactor `clearHeaders()` + +1.1.0 / 2024-09-10 +================== + +* Changes from 0.19.0 + +1.0.0 / 2024-07-25 +================== + + * Drop support for Node.js <18.0 + * `statuses@^2.0.1` + * `range-parser@^1.2.1` + * `on-finished@^2.4.1` + * `ms@^2.1.3` + * `mime-types@^2.1.35` + * `http-errors@^2.0.0` + * `fresh@^0.5.2` + * `etag@^1.8.1` + * `escape-html@^1.0.3` + * `encodeurl@^2.0.0` + * `destroy@^1.2.0` + * `debug@^4.3.5` + +1.0.0-beta.2 / 2024-03-04 +========================= + + * Changes from 0.18.0 + +1.0.0-beta.1 / 2022-02-04 +========================= + + * Drop support for Node.js 0.8 + * Remove `hidden` option -- use `dotfiles` option + * Remove `from` alias to `root` -- use `root` directly + * Remove `send.etag()` -- use `etag` in `options` + * Remove `send.index()` -- use `index` in `options` + * Remove `send.maxage()` -- use `maxAge` in `options` + * Remove `send.root()` -- use `root` in `options` + * Use `mime-types` for file to content type mapping -- removed `send.mime` + * deps: debug@3.1.0 + - Add `DEBUG_HIDE_DATE` environment variable + - Change timer to per-namespace instead of global + - Change non-TTY date format + - Remove `DEBUG_FD` environment variable support + - Support 256 namespace colors + 0.19.0 / 2024-09-10 =================== diff --git a/mcp/node_modules/send/README.md b/mcp/node_modules/send/README.md index fadf838..350fccd 100644 --- a/mcp/node_modules/send/README.md +++ b/mcp/node_modules/send/README.md @@ -2,8 +2,7 @@ [![NPM Version][npm-version-image]][npm-url] [![NPM Downloads][npm-downloads-image]][npm-url] -[![Linux Build][github-actions-ci-image]][github-actions-ci-url] -[![Windows Build][appveyor-image]][appveyor-url] +[![CI][github-actions-ci-image]][github-actions-ci-url] [![Test Coverage][coveralls-image]][coveralls-url] Send is a library for streaming files from the file system as a http response @@ -55,7 +54,7 @@ Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot ("."). Note this check is done on the path itself without checking if the path actually exists on the disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when when set +checked (i.e. the root itself can be within a dotfile when set to "deny"). - `'allow'` No special treatment for dotfiles. @@ -133,15 +132,6 @@ The `SendStream` is an event emitter and will emit the following events: The `pipe` method is used to pipe the response into the Node.js HTTP response object, typically `send(req, path, options).pipe(res)`. -### .mime - -The `mime` export is the global instance of of the -[`mime` npm module](https://www.npmjs.com/package/mime). - -This is used to configure the MIME types that are associated with file extensions -as well as other options for how to resolve the MIME type of a file (like the -default type to use for an unknown file extension). - ## Error-handling By default when no `error` listeners are present an automatic response will be @@ -210,20 +200,22 @@ server.listen(3000) ### Custom file types ```js +var extname = require('path').extname var http = require('http') var parseUrl = require('parseurl') var send = require('send') -// Default unknown types to text/plain -send.mime.default_type = 'text/plain' - -// Add a custom type -send.mime.define({ - 'application/x-my-type': ['x-mt', 'x-mtt'] -}) - var server = http.createServer(function onRequest (req, res) { send(req, parseUrl(req).pathname, { root: '/www/public' }) + .on('headers', function (res, path) { + switch (extname(path)) { + case '.x-mt': + case '.x-mtt': + // custom type for these extensions + res.setHeader('Content-Type', 'application/x-my-type') + break + } + }) .pipe(res) }) @@ -232,7 +224,7 @@ server.listen(3000) ### Custom directory index view -This is a example of serving up a structure of directories with a +This is an example of serving up a structure of directories with a custom function to render a listing of a directory. ```js @@ -314,8 +306,6 @@ server.listen(3000) [MIT](LICENSE) -[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/send/master?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/send [coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master [coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master [github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux diff --git a/mcp/node_modules/send/SECURITY.md b/mcp/node_modules/send/SECURITY.md deleted file mode 100644 index 46b48f7..0000000 --- a/mcp/node_modules/send/SECURITY.md +++ /dev/null @@ -1,24 +0,0 @@ -# Security Policies and Procedures - -## Reporting a Bug - -The `send` team and community take all security bugs seriously. Thank you -for improving the security of Express. We appreciate your efforts and -responsible disclosure and will make every effort to acknowledge your -contributions. - -Report security bugs by emailing the current owner(s) of `send`. This information -can be found in the npm registry using the command `npm owner ls send`. -If unsure or unable to get the information from the above, open an issue -in the [project issue tracker](https://github.com/pillarjs/send/issues) -asking for the current contact information. - -To ensure the timely response to your report, please ensure that the entirety -of the report is contained within the email body and not solely behind a web -link or an attachment. - -At least one owner will acknowledge your email within 48 hours, and will send a -more detailed response within 48 hours indicating the next steps in handling -your report. After the initial reply to your report, the owners will -endeavor to keep you informed of the progress towards a fix and full -announcement, and may ask for additional information or guidance. diff --git a/mcp/node_modules/send/index.js b/mcp/node_modules/send/index.js index 768f8ca..1655053 100644 --- a/mcp/node_modules/send/index.js +++ b/mcp/node_modules/send/index.js @@ -14,14 +14,12 @@ var createError = require('http-errors') var debug = require('debug')('send') -var deprecate = require('depd')('send') -var destroy = require('destroy') var encodeUrl = require('encodeurl') var escapeHtml = require('escape-html') var etag = require('etag') var fresh = require('fresh') var fs = require('fs') -var mime = require('mime') +var mime = require('mime-types') var ms = require('ms') var onFinished = require('on-finished') var parseRange = require('range-parser') @@ -68,7 +66,6 @@ var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/ */ module.exports = send -module.exports.mime = mime /** * Return a `SendStream` for `req` and `path`. @@ -122,17 +119,6 @@ function SendStream (req, path, options) { throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"') } - this._hidden = Boolean(opts.hidden) - - if (opts.hidden !== undefined) { - deprecate('hidden: use dotfiles: \'' + (this._hidden ? 'allow' : 'ignore') + '\' instead') - } - - // legacy support - if (opts.dotfiles === undefined) { - this._dotfiles = undefined - } - this._extensions = opts.extensions !== undefined ? normalizeList(opts.extensions, 'extensions option') : [] @@ -160,10 +146,6 @@ function SendStream (req, path, options) { this._root = opts.root ? resolve(opts.root) : null - - if (!this._root && opts.from) { - this.from(opts.from) - } } /** @@ -172,90 +154,6 @@ function SendStream (req, path, options) { util.inherits(SendStream, Stream) -/** - * Enable or disable etag generation. - * - * @param {Boolean} val - * @return {SendStream} - * @api public - */ - -SendStream.prototype.etag = deprecate.function(function etag (val) { - this._etag = Boolean(val) - debug('etag %s', this._etag) - return this -}, 'send.etag: pass etag as option') - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = deprecate.function(function hidden (val) { - this._hidden = Boolean(val) - this._dotfiles = undefined - debug('hidden %s', this._hidden) - return this -}, 'send.hidden: use dotfiles option') - -/** - * Set index `paths`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean|Array} paths - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = deprecate.function(function index (paths) { - var index = !paths ? [] : normalizeList(paths, 'paths argument') - debug('index %o', paths) - this._index = index - return this -}, 'send.index: pass index as option') - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = function root (path) { - this._root = resolve(String(path)) - debug('root %s', this._root) - return this -} - -SendStream.prototype.from = deprecate.function(SendStream.prototype.root, - 'send.from: pass root as option') - -SendStream.prototype.root = deprecate.function(SendStream.prototype.root, - 'send.root: pass root as option') - -/** - * Set max-age to `maxAge`. - * - * @param {Number} maxAge - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = deprecate.function(function maxage (maxAge) { - this._maxage = typeof maxAge === 'string' - ? ms(maxAge) - : Number(maxAge) - this._maxage = !isNaN(this._maxage) - ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) - : 0 - debug('max-age %d', this._maxage) - return this -}, 'send.maxage: pass maxAge as option') - /** * Emit error with `status`. * @@ -558,17 +456,8 @@ SendStream.prototype.pipe = function pipe (res) { // dotfile handling if (containsDotFile(parts)) { - var access = this._dotfiles - - // legacy support - if (access === undefined) { - access = parts[parts.length - 1][0] === '.' - ? (this._hidden ? 'allow' : 'ignore') - : 'allow' - } - - debug('%s dotfile "%s"', access, path) - switch (access) { + debug('%s dotfile "%s"', this._dotfiles, path) + switch (this._dotfiles) { case 'allow': break case 'deny': @@ -607,7 +496,7 @@ SendStream.prototype.send = function send (path, stat) { var ranges = req.headers.range var offset = options.start || 0 - if (headersSent(res)) { + if (res.headersSent) { // impossible to send now this.headersAlreadySent() return @@ -714,12 +603,14 @@ SendStream.prototype.sendFile = function sendFile (path) { debug('stat "%s"', path) fs.stat(path, function onstat (err, stat) { - if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) { + var pathEndsWithSep = path[path.length - 1] === sep + if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) { // not found, check extensions return next(err) } if (err) return self.onStatError(err) if (stat.isDirectory()) return self.redirect(path) + if (pathEndsWithSep) return self.error(404) self.emit('file', path, stat) self.send(path, stat) }) @@ -792,7 +683,7 @@ SendStream.prototype.stream = function stream (path, options) { // cleanup function cleanup () { - destroy(stream, true) + stream.destroy() } // response finished, cleanup @@ -826,17 +717,11 @@ SendStream.prototype.type = function type (path) { if (res.getHeader('Content-Type')) return - var type = mime.lookup(path) - - if (!type) { - debug('no content-type') - return - } - - var charset = mime.charsets.lookup(type) + var ext = extname(path) + var type = mime.contentType(ext) || 'application/octet-stream' debug('content-type %s', type) - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')) + res.setHeader('Content-Type', type) } /** @@ -890,10 +775,8 @@ SendStream.prototype.setHeader = function setHeader (path, stat) { */ function clearHeaders (res) { - var headers = getHeaderNames(res) - - for (var i = 0; i < headers.length; i++) { - res.removeHeader(headers[i]) + for (const header of res.getHeaderNames()) { + res.removeHeader(header) } } @@ -1001,24 +884,10 @@ function decode (path) { } } -/** - * Get the header names on a respnse. - * - * @param {object} res - * @returns {array[string]} - * @private - */ - -function getHeaderNames (res) { - return typeof res.getHeaderNames !== 'function' - ? Object.keys(res._headers || {}) - : res.getHeaderNames() -} - /** * Determine if emitter has listeners of a given type. * - * The way to do this check is done three different ways in Node.js >= 0.8 + * The way to do this check is done three different ways in Node.js >= 0.10 * so this consolidates them into a minimal set using instance methods. * * @param {EventEmitter} emitter @@ -1035,20 +904,6 @@ function hasListeners (emitter, type) { return count > 0 } -/** - * Determine if the response headers have been sent. - * - * @param {object} res - * @returns {boolean} - * @private - */ - -function headersSent (res) { - return typeof res.headersSent !== 'boolean' - ? Boolean(res._header) - : res.headersSent -} - /** * Normalize the index option into an array. * diff --git a/mcp/node_modules/send/node_modules/encodeurl/HISTORY.md b/mcp/node_modules/send/node_modules/encodeurl/HISTORY.md deleted file mode 100644 index 41313b2..0000000 --- a/mcp/node_modules/send/node_modules/encodeurl/HISTORY.md +++ /dev/null @@ -1,14 +0,0 @@ -1.0.2 / 2018-01-21 -================== - - * Fix encoding `%` as last character - -1.0.1 / 2016-06-09 -================== - - * Fix encoding unpaired surrogates at start/end of string - -1.0.0 / 2016-06-08 -================== - - * Initial release diff --git a/mcp/node_modules/send/node_modules/encodeurl/LICENSE b/mcp/node_modules/send/node_modules/encodeurl/LICENSE deleted file mode 100644 index 8812229..0000000 --- a/mcp/node_modules/send/node_modules/encodeurl/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/send/node_modules/encodeurl/README.md b/mcp/node_modules/send/node_modules/encodeurl/README.md deleted file mode 100644 index 127c5a0..0000000 --- a/mcp/node_modules/send/node_modules/encodeurl/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# encodeurl - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Encode a URL to a percent-encoded form, excluding already-encoded sequences - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install encodeurl -``` - -## API - -```js -var encodeUrl = require('encodeurl') -``` - -### encodeUrl(url) - -Encode a URL to a percent-encoded form, excluding already-encoded sequences. - -This function will take an already-encoded URL and encode all the non-URL -code points (as UTF-8 byte sequences). This function will not encode the -"%" character unless it is not part of a valid sequence (`%20` will be -left as-is, but `%foo` will be encoded as `%25foo`). - -This encode is meant to be "safe" and does not throw errors. It will try as -hard as it can to properly encode the given URL, including replacing any raw, -unpaired surrogate pairs with the Unicode replacement character prior to -encoding. - -This function is _similar_ to the intrinsic function `encodeURI`, except it -will not encode the `%` character if that is part of a valid sequence, will -not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired -surrogate pairs with the Unicode replacement character (instead of throwing). - -## Examples - -### Encode a URL containing user-controled data - -```js -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') - -http.createServer(function onRequest (req, res) { - // get encoded form of inbound url - var url = encodeUrl(req.url) - - // create html message - var body = '

Location ' + escapeHtml(url) + ' not found

' - - // send a 404 - res.statusCode = 404 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) - res.end(body, 'utf-8') -}) -``` - -### Encode a URL for use in a header field - -```js -var encodeUrl = require('encodeurl') -var escapeHtml = require('escape-html') -var url = require('url') - -http.createServer(function onRequest (req, res) { - // parse inbound url - var href = url.parse(req) - - // set new host for redirect - href.host = 'localhost' - href.protocol = 'https:' - href.slashes = true - - // create location header - var location = encodeUrl(url.format(href)) - - // create html message - var body = '

Redirecting to new site: ' + escapeHtml(location) + '

' - - // send a 301 - res.statusCode = 301 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) - res.setHeader('Location', location) - res.end(body, 'utf-8') -}) -``` - -## Testing - -```sh -$ npm test -$ npm run lint -``` - -## References - -- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986] -- [WHATWG URL Living Standard][whatwg-url] - -[rfc-3986]: https://tools.ietf.org/html/rfc3986 -[whatwg-url]: https://url.spec.whatwg.org/ - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/encodeurl.svg -[npm-url]: https://npmjs.org/package/encodeurl -[node-version-image]: https://img.shields.io/node/v/encodeurl.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg -[travis-url]: https://travis-ci.org/pillarjs/encodeurl -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg -[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master -[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg -[downloads-url]: https://npmjs.org/package/encodeurl diff --git a/mcp/node_modules/send/node_modules/encodeurl/index.js b/mcp/node_modules/send/node_modules/encodeurl/index.js deleted file mode 100644 index fc4906c..0000000 --- a/mcp/node_modules/send/node_modules/encodeurl/index.js +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * encodeurl - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = encodeUrl - -/** - * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") - * and including invalid escape sequences. - * @private - */ - -var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g - -/** - * RegExp to match unmatched surrogate pair. - * @private - */ - -var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g - -/** - * String to replace unmatched surrogate pair with. - * @private - */ - -var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' - -/** - * Encode a URL to a percent-encoded form, excluding already-encoded sequences. - * - * This function will take an already-encoded URL and encode all the non-URL - * code points. This function will not encode the "%" character unless it is - * not part of a valid sequence (`%20` will be left as-is, but `%foo` will - * be encoded as `%25foo`). - * - * This encode is meant to be "safe" and does not throw errors. It will try as - * hard as it can to properly encode the given URL, including replacing any raw, - * unpaired surrogate pairs with the Unicode replacement character prior to - * encoding. - * - * @param {string} url - * @return {string} - * @public - */ - -function encodeUrl (url) { - return String(url) - .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) - .replace(ENCODE_CHARS_REGEXP, encodeURI) -} diff --git a/mcp/node_modules/send/node_modules/encodeurl/package.json b/mcp/node_modules/send/node_modules/encodeurl/package.json deleted file mode 100644 index b9f25ef..0000000 --- a/mcp/node_modules/send/node_modules/encodeurl/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "encodeurl", - "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", - "version": "1.0.2", - "contributors": [ - "Douglas Christopher Wilson " - ], - "license": "MIT", - "keywords": [ - "encode", - "encodeurl", - "url" - ], - "repository": "pillarjs/encodeurl", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.8.0", - "eslint-plugin-node": "5.2.1", - "eslint-plugin-promise": "3.6.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "2.5.3" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - } -} diff --git a/mcp/node_modules/send/node_modules/ms/index.js b/mcp/node_modules/send/node_modules/ms/index.js deleted file mode 100644 index ea734fb..0000000 --- a/mcp/node_modules/send/node_modules/ms/index.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ - -module.exports = function (val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} diff --git a/mcp/node_modules/send/node_modules/ms/license.md b/mcp/node_modules/send/node_modules/ms/license.md deleted file mode 100644 index fa5d39b..0000000 --- a/mcp/node_modules/send/node_modules/ms/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/mcp/node_modules/send/node_modules/ms/package.json b/mcp/node_modules/send/node_modules/ms/package.json deleted file mode 100644 index 4997189..0000000 --- a/mcp/node_modules/send/node_modules/ms/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "ms", - "version": "2.1.3", - "description": "Tiny millisecond conversion utility", - "repository": "vercel/ms", - "main": "./index", - "files": [ - "index.js" - ], - "scripts": { - "precommit": "lint-staged", - "lint": "eslint lib/* bin/*", - "test": "mocha tests.js" - }, - "eslintConfig": { - "extends": "eslint:recommended", - "env": { - "node": true, - "es6": true - } - }, - "lint-staged": { - "*.js": [ - "npm run lint", - "prettier --single-quote --write", - "git add" - ] - }, - "license": "MIT", - "devDependencies": { - "eslint": "4.18.2", - "expect.js": "0.3.1", - "husky": "0.14.3", - "lint-staged": "5.0.0", - "mocha": "4.0.1", - "prettier": "2.0.5" - } -} diff --git a/mcp/node_modules/send/node_modules/ms/readme.md b/mcp/node_modules/send/node_modules/ms/readme.md deleted file mode 100644 index 0fc1abb..0000000 --- a/mcp/node_modules/send/node_modules/ms/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# ms - -![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) - -Use this package to easily convert various time formats to milliseconds. - -## Examples - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('1y') // 31557600000 -ms('100') // 100 -ms('-3 days') // -259200000 -ms('-1h') // -3600000 -ms('-200') // -200 -``` - -### Convert from Milliseconds - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(-3 * 60000) // "-3m" -ms(ms('10 hours')) // "10h" -``` - -### Time Format Written-Out - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(-3 * 60000, { long: true }) // "-3 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -## Features - -- Works both in [Node.js](https://nodejs.org) and in the browser -- If a number is supplied to `ms`, a string with a unit is returned -- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) -- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned - -## Related Packages - -- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. - -## Caught a Bug? - -1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device -2. Link the package to the global module directory: `npm link` -3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! - -As always, you can run the tests using: `npm test` diff --git a/mcp/node_modules/send/package.json b/mcp/node_modules/send/package.json index a3233e0..d6a969a 100644 --- a/mcp/node_modules/send/package.json +++ b/mcp/node_modules/send/package.json @@ -1,7 +1,7 @@ { "name": "send", "description": "Better streaming static file server with Range and conditional-GET support", - "version": "0.19.0", + "version": "1.2.0", "author": "TJ Holowaychuk ", "contributors": [ "Douglas Christopher Wilson ", @@ -16,22 +16,20 @@ "server" ], "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "devDependencies": { - "after": "0.8.2", + "after": "^0.8.2", "eslint": "7.32.0", "eslint-config-standard": "14.1.1", "eslint-plugin-import": "2.25.4", @@ -39,24 +37,24 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0", + "mocha": "^10.7.0", + "nyc": "^17.0.0", "supertest": "6.2.2" }, "files": [ "HISTORY.md", "LICENSE", "README.md", - "SECURITY.md", "index.js" ], "engines": { - "node": ">= 0.8.0" + "node": ">= 18" }, "scripts": { "lint": "eslint .", - "test": "mocha --check-leaks --reporter spec --bail", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" } } diff --git a/mcp/node_modules/serve-static/HISTORY.md b/mcp/node_modules/serve-static/HISTORY.md index dccf667..a3f174e 100644 --- a/mcp/node_modules/serve-static/HISTORY.md +++ b/mcp/node_modules/serve-static/HISTORY.md @@ -1,19 +1,48 @@ -1.16.2 / 2024-09-11 +2.2.0 / 2025-03-27 +================== + +* deps: send@^1.2.0 + +2.1.0 / 2024-09-10 =================== -* deps: encodeurl@~2.0.0 +* Changes from 1.16.0 +* deps: send@^1.2.0 -1.16.1 / 2024-09-11 -=================== +2.0.0 / 2024-08-23 +================== -* deps: send@0.19.0 +* deps: + * parseurl@^1.3.3 + * excape-html@^1.0.3 + * encodeurl@^2.0.0 + * supertest@^6.3.4 + * safe-buffer@^5.2.1 + * nyc@^17.0.0 + * mocha@^10.7.0 +* Changes from 1.x + +2.0.0-beta.2 / 2024-03-20 +========================= + + * deps: send@1.0.0-beta.2 + +2.0.0-beta.1 / 2022-02-05 +========================= + + * Change `dotfiles` option default to `'ignore'` + * Drop support for Node.js 0.8 + * Remove `hidden` option; use `dotfiles` option instead + * Remove `mime` export; use `mime-types` package instead + * deps: send@1.0.0-beta.1 + - Use `mime-types` for file to content type mapping + - deps: debug@3.1.0 1.16.0 / 2024-09-10 =================== * Remove link renderization in html while redirecting - 1.15.0 / 2022-03-24 =================== diff --git a/mcp/node_modules/serve-static/README.md b/mcp/node_modules/serve-static/README.md index 262d944..70f01c3 100644 --- a/mcp/node_modules/serve-static/README.md +++ b/mcp/node_modules/serve-static/README.md @@ -2,8 +2,7 @@ [![NPM Version][npm-version-image]][npm-url] [![NPM Downloads][npm-downloads-image]][npm-url] -[![Linux Build][github-actions-ci-image]][github-actions-ci-url] -[![Windows Build][appveyor-image]][appveyor-url] +[![CI][github-actions-ci-image]][github-actions-ci-url] [![Test Coverage][coveralls-image]][coveralls-url] ## Install @@ -45,7 +44,7 @@ true. Disabling this will ignore the `immutable` and `maxAge` options. ##### dotfiles - Set how "dotfiles" are treated when encountered. A dotfile is a file +Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot ("."). Note this check is done on the path itself without checking if the path actually exists on the disk. If `root` is specified, only the dotfiles above the root are @@ -56,8 +55,7 @@ to "deny"). - `'deny'` Deny a request for a dotfile and 403/`next()`. - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`. -The default value is similar to `'ignore'`, with the exception that this -default will not ignore the files within a directory that begins with a dot. +The default value is `'ignore'`. ##### etag @@ -215,7 +213,7 @@ app.listen(3000) #### Different settings for paths This example shows how to set a different max age depending on the served -file type. In this example, HTML files are not cached, while everything else +file. In this example, HTML files are not cached, while everything else is for 1 day. ```js @@ -232,8 +230,8 @@ app.use(serveStatic(path.join(__dirname, 'public'), { app.listen(3000) -function setCustomCacheControl (res, path) { - if (serveStatic.mime.lookup(path) === 'text/html') { +function setCustomCacheControl (res, file) { + if (path.extname(file) === '.html') { // Custom Cache-Control for HTML files res.setHeader('Cache-Control', 'public, max-age=0') } @@ -244,8 +242,6 @@ function setCustomCacheControl (res, path) { [MIT](LICENSE) -[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/serve-static/master?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-static [coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/serve-static/master [coveralls-url]: https://coveralls.io/r/expressjs/serve-static?branch=master [github-actions-ci-image]: https://badgen.net/github/checks/expressjs/serve-static/master?label=linux diff --git a/mcp/node_modules/serve-static/index.js b/mcp/node_modules/serve-static/index.js index 3f3e64e..1bee463 100644 --- a/mcp/node_modules/serve-static/index.js +++ b/mcp/node_modules/serve-static/index.js @@ -26,7 +26,6 @@ var url = require('url') */ module.exports = serveStatic -module.exports.mime = send.mime /** * @param {string} root diff --git a/mcp/node_modules/serve-static/package.json b/mcp/node_modules/serve-static/package.json index 49d7542..38d3365 100644 --- a/mcp/node_modules/serve-static/package.json +++ b/mcp/node_modules/serve-static/package.json @@ -1,15 +1,15 @@ { "name": "serve-static", "description": "Serve static files", - "version": "1.16.2", + "version": "2.2.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "expressjs/serve-static", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "devDependencies": { "eslint": "7.32.0", @@ -19,10 +19,9 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "5.2.0", "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0", - "safe-buffer": "5.2.1", - "supertest": "6.2.2" + "mocha": "^10.7.0", + "nyc": "^17.0.0", + "supertest": "^6.3.4" }, "files": [ "LICENSE", @@ -30,7 +29,7 @@ "index.js" ], "engines": { - "node": ">= 0.8.0" + "node": ">= 18" }, "scripts": { "lint": "eslint .", diff --git a/mcp/node_modules/type-is/HISTORY.md b/mcp/node_modules/type-is/HISTORY.md index 8de21f7..6812655 100644 --- a/mcp/node_modules/type-is/HISTORY.md +++ b/mcp/node_modules/type-is/HISTORY.md @@ -1,3 +1,36 @@ +2.0.1 / 2025-03-27 +========== + +2.0.0 / 2024-08-31 +========== + + * Drop node <18 + * Use `content-type@^1.0.5` and `media-typer@^1.0.0` for type validation + - No behavior changes, upgrades `media-typer` + * deps: mime-types@^3.0.0 + - Add `application/toml` with extension `.toml` + - Add `application/ubjson` with extension `.ubj` + - Add `application/x-keepass2` with extension `.kdbx` + - Add deprecated iWorks mime types and extensions + - Add extension `.amr` to `audio/amr` + - Add extension `.cjs` to `application/node` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extension `.opus` to `audio/ogg` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add extension `.trig` to `application/trig` + - Add extensions from IANA for `application/*+xml` types + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add `image/vnd.ms-dds` with extension `.dds` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + 1.6.18 / 2019-04-26 =================== diff --git a/mcp/node_modules/type-is/README.md b/mcp/node_modules/type-is/README.md index b85ef8f..d23946e 100644 --- a/mcp/node_modules/type-is/README.md +++ b/mcp/node_modules/type-is/README.md @@ -3,12 +3,12 @@ [![NPM Version][npm-version-image]][npm-url] [![NPM Downloads][npm-downloads-image]][npm-url] [![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] +[![Build Status][ci-image]][ci-url] [![Test Coverage][coveralls-image]][coveralls-url] Infer the content-type of a request. -### Install +## Install This is a [Node.js](https://nodejs.org/en/) module available through the [npm registry](https://www.npmjs.com/). Installation is done using the @@ -52,8 +52,6 @@ Each type in the `types` array can be one of the following: Some examples to illustrate the inputs and returned value: - - ```js // req.headers.content-type = 'application/json' @@ -74,8 +72,6 @@ Having a body has no relation to how large the body is (it may be 0 bytes). This is similar to how file existence works. If a body does exist, then this indicates that there is data to read from the Node.js request stream. - - ```js if (typeis.hasBody(req)) { // read the body, since there is one @@ -108,8 +104,6 @@ Each type in the `types` array can be one of the following: Some examples to illustrate the inputs and returned value: - - ```js var mediaType = 'application/json' @@ -121,6 +115,38 @@ typeis.is(mediaType, ['application/json']) // => 'application/json' typeis.is(mediaType, ['html']) // => false ``` +### typeis.match(expected, actual) + +Match the type string `expected` with `actual`, taking in to account wildcards. +A wildcard can only be in the type of the subtype part of a media type and only +in the `expected` value (as `actual` should be the real media type to match). A +suffix can still be included even with a wildcard subtype. If an input is +malformed, `false` will be returned. + +```js +typeis.match('text/html', 'text/html') // => true +typeis.match('*/html', 'text/html') // => true +typeis.match('text/*', 'text/html') // => true +typeis.match('*/*', 'text/html') // => true +typeis.match('*/*+json', 'application/x-custom+json') // => true +``` + +### typeis.normalize(type) + +Normalize a `type` string. This works by performing the following: + +- If the `type` is not a string, `false` is returned. +- If the string starts with `+` (so it is a `+suffix` shorthand like `+json`), + then it is expanded to contain the complete wildcard notation of `*/*+suffix`. +- If the string contains a `/`, then it is returned as the type. +- Else the string is assumed to be a file extension and the mapped media type is + returned, or `false` is there is no mapping. + +This includes two special mappings: + +- `'multipart'` -> `'multipart/*'` +- `'urlencoded'` -> `'application/x-www-form-urlencoded'` + ## Examples ### Example body parser @@ -159,6 +185,8 @@ app.use(function bodyParser (req, res, next) { [MIT](LICENSE) +[ci-image]: https://badgen.net/github/checks/jshttp/type-is/master?label=ci +[ci-url]: https://github.com/jshttp/type-is/actions/workflows/ci.yml [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/type-is/master [coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master [node-version-image]: https://badgen.net/npm/node/type-is diff --git a/mcp/node_modules/type-is/index.js b/mcp/node_modules/type-is/index.js index 890ad76..e773845 100644 --- a/mcp/node_modules/type-is/index.js +++ b/mcp/node_modules/type-is/index.js @@ -12,8 +12,9 @@ * @private */ -var typer = require('media-typer') +var contentType = require('content-type') var mime = require('mime-types') +var typer = require('media-typer') /** * Module exports. @@ -115,27 +116,19 @@ function hasbody (req) { * * this.is('html'); // => false * - * @param {String|Array} types... - * @return {String|false|null} + * @param {Object} req + * @param {(String|Array)} types... + * @return {(String|false|null)} * @public */ function typeofrequest (req, types_) { - var types = types_ - // no body - if (!hasbody(req)) { - return null - } - + if (!hasbody(req)) return null // support flattened arguments - if (arguments.length > 2) { - types = new Array(arguments.length - 1) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - + var types = arguments.length > 2 + ? Array.prototype.slice.call(arguments, 1) + : types_ // request content type var value = req.headers['content-type'] @@ -155,7 +148,8 @@ function typeofrequest (req, types_) { * and are thus ensured to work. * * @param {String} type - * @private + * @return {String|false|null} + * @public */ function normalize (type) { @@ -189,7 +183,7 @@ function normalize (type) { * @param {String} expected * @param {String} actual * @return {Boolean} - * @private + * @public */ function mimeMatch (expected, actual) { @@ -213,9 +207,9 @@ function mimeMatch (expected, actual) { } // validate suffix wildcard - if (expectedParts[1].substr(0, 2) === '*+') { + if (expectedParts[1].slice(0, 2) === '*+') { return expectedParts[1].length <= actualParts[1].length + 1 && - expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length) + expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length) } // validate subtype @@ -230,36 +224,26 @@ function mimeMatch (expected, actual) { * Normalize a type and remove parameters. * * @param {string} value - * @return {string} + * @return {(string|null)} * @private */ - function normalizeType (value) { - // parse the type - var type = typer.parse(value) + // Parse the type + var type = contentType.parse(value).type - // remove the parameters - type.parameters = undefined - - // reformat it - return typer.format(type) + return typer.test(type) ? type : null } /** * Try to normalize a type and remove parameters. * * @param {string} value - * @return {string} + * @return {(string|null)} * @private */ - function tryNormalizeType (value) { - if (!value) { - return null - } - try { - return normalizeType(value) + return value ? normalizeType(value) : null } catch (err) { return null } diff --git a/mcp/node_modules/type-is/package.json b/mcp/node_modules/type-is/package.json index 97ba5f1..08586d2 100644 --- a/mcp/node_modules/type-is/package.json +++ b/mcp/node_modules/type-is/package.json @@ -1,7 +1,7 @@ { "name": "type-is", "description": "Infer the content-type of a request.", - "version": "1.6.18", + "version": "2.0.1", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -9,19 +9,20 @@ "license": "MIT", "repository": "jshttp/type-is", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "devDependencies": { - "eslint": "5.16.0", - "eslint-config-standard": "12.0.0", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-markdown": "1.0.0", - "eslint-plugin-node": "8.0.1", - "eslint-plugin-promise": "4.1.1", - "eslint-plugin-standard": "4.0.0", - "mocha": "6.1.4", - "nyc": "14.0.0" + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0" }, "engines": { "node": ">= 0.6" @@ -32,10 +33,11 @@ "index.js" ], "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", + "lint": "eslint .", "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-travis": "nyc --reporter=text npm test" + "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" }, "keywords": [ "content", diff --git a/mcp/node_modules/utils-merge/.npmignore b/mcp/node_modules/utils-merge/.npmignore deleted file mode 100644 index 3e53844..0000000 --- a/mcp/node_modules/utils-merge/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -CONTRIBUTING.md -Makefile -docs/ -examples/ -reports/ -test/ - -.jshintrc -.travis.yml diff --git a/mcp/node_modules/utils-merge/LICENSE b/mcp/node_modules/utils-merge/LICENSE deleted file mode 100644 index 76f6d08..0000000 --- a/mcp/node_modules/utils-merge/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2017 Jared Hanson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcp/node_modules/utils-merge/README.md b/mcp/node_modules/utils-merge/README.md deleted file mode 100644 index 0cb7117..0000000 --- a/mcp/node_modules/utils-merge/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# utils-merge - -[![Version](https://img.shields.io/npm/v/utils-merge.svg?label=version)](https://www.npmjs.com/package/utils-merge) -[![Build](https://img.shields.io/travis/jaredhanson/utils-merge.svg)](https://travis-ci.org/jaredhanson/utils-merge) -[![Quality](https://img.shields.io/codeclimate/github/jaredhanson/utils-merge.svg?label=quality)](https://codeclimate.com/github/jaredhanson/utils-merge) -[![Coverage](https://img.shields.io/coveralls/jaredhanson/utils-merge.svg)](https://coveralls.io/r/jaredhanson/utils-merge) -[![Dependencies](https://img.shields.io/david/jaredhanson/utils-merge.svg)](https://david-dm.org/jaredhanson/utils-merge) - - -Merges the properties from a source object into a destination object. - -## Install - -```bash -$ npm install utils-merge -``` - -## Usage - -```javascript -var a = { foo: 'bar' } - , b = { bar: 'baz' }; - -merge(a, b); -// => { foo: 'bar', bar: 'baz' } -``` - -## License - -[The MIT License](http://opensource.org/licenses/MIT) - -Copyright (c) 2013-2017 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)> - - Sponsor diff --git a/mcp/node_modules/utils-merge/index.js b/mcp/node_modules/utils-merge/index.js deleted file mode 100644 index 4265c69..0000000 --- a/mcp/node_modules/utils-merge/index.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Merge object b with object a. - * - * var a = { foo: 'bar' } - * , b = { bar: 'baz' }; - * - * merge(a, b); - * // => { foo: 'bar', bar: 'baz' } - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api public - */ - -exports = module.exports = function(a, b){ - if (a && b) { - for (var key in b) { - a[key] = b[key]; - } - } - return a; -}; diff --git a/mcp/node_modules/utils-merge/package.json b/mcp/node_modules/utils-merge/package.json deleted file mode 100644 index e36b078..0000000 --- a/mcp/node_modules/utils-merge/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "utils-merge", - "version": "1.0.1", - "description": "merge() utility function", - "keywords": [ - "util" - ], - "author": { - "name": "Jared Hanson", - "email": "jaredhanson@gmail.com", - "url": "http://www.jaredhanson.net/" - }, - "repository": { - "type": "git", - "url": "git://github.com/jaredhanson/utils-merge.git" - }, - "bugs": { - "url": "http://github.com/jaredhanson/utils-merge/issues" - }, - "license": "MIT", - "licenses": [ - { - "type": "MIT", - "url": "http://opensource.org/licenses/MIT" - } - ], - "main": "./index", - "dependencies": {}, - "devDependencies": { - "make-node": "0.3.x", - "mocha": "1.x.x", - "chai": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - }, - "scripts": { - "test": "node_modules/.bin/mocha --reporter spec --require test/bootstrap/node test/*.test.js" - } -} diff --git a/ui/src/components/empleados/tablaEmpleados.vue b/ui/src/components/empleados/tablaEmpleados.vue index e7f0ac7..e8641f6 100644 --- a/ui/src/components/empleados/tablaEmpleados.vue +++ b/ui/src/components/empleados/tablaEmpleados.vue @@ -54,7 +54,7 @@ const columns = [ { key: 'cedula', label: 'CĂ©dula' }, { key: 'telefono', label: 'TelĂ©fono' }, { key: 'ubicacion', label: 'UbicaciĂłn' }, - { key: 'idciat', label: 'ID CIAT' }, + { key: 'id', label: 'ID' }, ]; // Keep existing methods diff --git a/ui/src/views/empleados/EmpleadoForm.vue b/ui/src/views/empleados/EmpleadoForm.vue index e2fa142..9b8fcb0 100644 --- a/ui/src/views/empleados/EmpleadoForm.vue +++ b/ui/src/views/empleados/EmpleadoForm.vue @@ -150,7 +150,7 @@ import { ref, onMounted, computed } from 'vue' import { useRoute, useRouter } from 'vue-router' import { storeToRefs } from 'pinia' import { useEmpleadosStore } from '@/stores/useEmpleados.js' -import { useUi } from '@/stores/useUi'; // Corrected UI store import +import { useUi } from '@/stores/useUi.js'; // Corrected UI store import /* ───── Tipos ───── */ interface EmpleadoForm {