├── .gitmodules ├── LICENSE.md ├── README.md ├── bower.json ├── examples-no-indexes.html ├── examples.html ├── index.js ├── lib ├── encoding-indexes.js └── encoding.js ├── package.json ├── test ├── test-big5.js ├── test-euc-jp.js ├── test-euc-kr.js ├── test-gb18030.js ├── test-gbk.js ├── test-iso-2022-jp.js ├── test-misc.js ├── test-shift_jis.js ├── test-utf.js ├── test-x-user-defined.js └── tests.html └── util └── externs.js /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "test/testharness.js"] 2 | path = test/testharness.js 3 | url = https://github.com/w3c/testharness.js.git 4 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The encoding indexes, algorithms, and many comments in the code 2 | derive from the Encoding Standard https://encoding.spec.whatwg.org/ 3 | 4 | Otherwise, the code of this repository is released under the Unlicense 5 | license and is also dual-licensed under an Apache 2.0 license. Both 6 | are included below. 7 | 8 | # Unlicense 9 | 10 | This is free and unencumbered software released into the public domain. 11 | 12 | Anyone is free to copy, modify, publish, use, compile, sell, or 13 | distribute this software, either in source code form or as a compiled 14 | binary, for any purpose, commercial or non-commercial, and by any 15 | means. 16 | 17 | In jurisdictions that recognize copyright laws, the author or authors 18 | of this software dedicate any and all copyright interest in the 19 | software to the public domain. We make this dedication for the benefit 20 | of the public at large and to the detriment of our heirs and 21 | successors. We intend this dedication to be an overt act of 22 | relinquishment in perpetuity of all present and future rights to this 23 | software under copyright law. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 28 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 29 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 30 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 31 | OTHER DEALINGS IN THE SOFTWARE. 32 | 33 | For more information, please refer to 34 | 35 | # Apache 2.0 License 36 | 37 | Apache License 38 | Version 2.0, January 2004 39 | http://www.apache.org/licenses/ 40 | 41 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 42 | 43 | 1. Definitions. 44 | 45 | "License" shall mean the terms and conditions for use, reproduction, 46 | and distribution as defined by Sections 1 through 9 of this document. 47 | 48 | "Licensor" shall mean the copyright owner or entity authorized by 49 | the copyright owner that is granting the License. 50 | 51 | "Legal Entity" shall mean the union of the acting entity and all 52 | other entities that control, are controlled by, or are under common 53 | control with that entity. For the purposes of this definition, 54 | "control" means (i) the power, direct or indirect, to cause the 55 | direction or management of such entity, whether by contract or 56 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 57 | outstanding shares, or (iii) beneficial ownership of such entity. 58 | 59 | "You" (or "Your") shall mean an individual or Legal Entity 60 | exercising permissions granted by this License. 61 | 62 | "Source" form shall mean the preferred form for making modifications, 63 | including but not limited to software source code, documentation 64 | source, and configuration files. 65 | 66 | "Object" form shall mean any form resulting from mechanical 67 | transformation or translation of a Source form, including but 68 | not limited to compiled object code, generated documentation, 69 | and conversions to other media types. 70 | 71 | "Work" shall mean the work of authorship, whether in Source or 72 | Object form, made available under the License, as indicated by a 73 | copyright notice that is included in or attached to the work 74 | (an example is provided in the Appendix below). 75 | 76 | "Derivative Works" shall mean any work, whether in Source or Object 77 | form, that is based on (or derived from) the Work and for which the 78 | editorial revisions, annotations, elaborations, or other modifications 79 | represent, as a whole, an original work of authorship. For the purposes 80 | of this License, Derivative Works shall not include works that remain 81 | separable from, or merely link (or bind by name) to the interfaces of, 82 | the Work and Derivative Works thereof. 83 | 84 | "Contribution" shall mean any work of authorship, including 85 | the original version of the Work and any modifications or additions 86 | to that Work or Derivative Works thereof, that is intentionally 87 | submitted to Licensor for inclusion in the Work by the copyright owner 88 | or by an individual or Legal Entity authorized to submit on behalf of 89 | the copyright owner. For the purposes of this definition, "submitted" 90 | means any form of electronic, verbal, or written communication sent 91 | to the Licensor or its representatives, including but not limited to 92 | communication on electronic mailing lists, source code control systems, 93 | and issue tracking systems that are managed by, or on behalf of, the 94 | Licensor for the purpose of discussing and improving the Work, but 95 | excluding communication that is conspicuously marked or otherwise 96 | designated in writing by the copyright owner as "Not a Contribution." 97 | 98 | "Contributor" shall mean Licensor and any individual or Legal Entity 99 | on behalf of whom a Contribution has been received by Licensor and 100 | subsequently incorporated within the Work. 101 | 102 | 2. Grant of Copyright License. Subject to the terms and conditions of 103 | this License, each Contributor hereby grants to You a perpetual, 104 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 105 | copyright license to reproduce, prepare Derivative Works of, 106 | publicly display, publicly perform, sublicense, and distribute the 107 | Work and such Derivative Works in Source or Object form. 108 | 109 | 3. Grant of Patent License. Subject to the terms and conditions of 110 | this License, each Contributor hereby grants to You a perpetual, 111 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 112 | (except as stated in this section) patent license to make, have made, 113 | use, offer to sell, sell, import, and otherwise transfer the Work, 114 | where such license applies only to those patent claims licensable 115 | by such Contributor that are necessarily infringed by their 116 | Contribution(s) alone or by combination of their Contribution(s) 117 | with the Work to which such Contribution(s) was submitted. If You 118 | institute patent litigation against any entity (including a 119 | cross-claim or counterclaim in a lawsuit) alleging that the Work 120 | or a Contribution incorporated within the Work constitutes direct 121 | or contributory patent infringement, then any patent licenses 122 | granted to You under this License for that Work shall terminate 123 | as of the date such litigation is filed. 124 | 125 | 4. Redistribution. You may reproduce and distribute copies of the 126 | Work or Derivative Works thereof in any medium, with or without 127 | modifications, and in Source or Object form, provided that You 128 | meet the following conditions: 129 | 130 | (a) You must give any other recipients of the Work or 131 | Derivative Works a copy of this License; and 132 | 133 | (b) You must cause any modified files to carry prominent notices 134 | stating that You changed the files; and 135 | 136 | (c) You must retain, in the Source form of any Derivative Works 137 | that You distribute, all copyright, patent, trademark, and 138 | attribution notices from the Source form of the Work, 139 | excluding those notices that do not pertain to any part of 140 | the Derivative Works; and 141 | 142 | (d) If the Work includes a "NOTICE" text file as part of its 143 | distribution, then any Derivative Works that You distribute must 144 | include a readable copy of the attribution notices contained 145 | within such NOTICE file, excluding those notices that do not 146 | pertain to any part of the Derivative Works, in at least one 147 | of the following places: within a NOTICE text file distributed 148 | as part of the Derivative Works; within the Source form or 149 | documentation, if provided along with the Derivative Works; or, 150 | within a display generated by the Derivative Works, if and 151 | wherever such third-party notices normally appear. The contents 152 | of the NOTICE file are for informational purposes only and 153 | do not modify the License. You may add Your own attribution 154 | notices within Derivative Works that You distribute, alongside 155 | or as an addendum to the NOTICE text from the Work, provided 156 | that such additional attribution notices cannot be construed 157 | as modifying the License. 158 | 159 | You may add Your own copyright statement to Your modifications and 160 | may provide additional or different license terms and conditions 161 | for use, reproduction, or distribution of Your modifications, or 162 | for any such Derivative Works as a whole, provided Your use, 163 | reproduction, and distribution of the Work otherwise complies with 164 | the conditions stated in this License. 165 | 166 | 5. Submission of Contributions. Unless You explicitly state otherwise, 167 | any Contribution intentionally submitted for inclusion in the Work 168 | by You to the Licensor shall be under the terms and conditions of 169 | this License, without any additional terms or conditions. 170 | Notwithstanding the above, nothing herein shall supersede or modify 171 | the terms of any separate license agreement you may have executed 172 | with Licensor regarding such Contributions. 173 | 174 | 6. Trademarks. This License does not grant permission to use the trade 175 | names, trademarks, service marks, or product names of the Licensor, 176 | except as required for reasonable and customary use in describing the 177 | origin of the Work and reproducing the content of the NOTICE file. 178 | 179 | 7. Disclaimer of Warranty. Unless required by applicable law or 180 | agreed to in writing, Licensor provides the Work (and each 181 | Contributor provides its Contributions) on an "AS IS" BASIS, 182 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 183 | implied, including, without limitation, any warranties or conditions 184 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 185 | PARTICULAR PURPOSE. You are solely responsible for determining the 186 | appropriateness of using or redistributing the Work and assume any 187 | risks associated with Your exercise of permissions under this License. 188 | 189 | 8. Limitation of Liability. In no event and under no legal theory, 190 | whether in tort (including negligence), contract, or otherwise, 191 | unless required by applicable law (such as deliberate and grossly 192 | negligent acts) or agreed to in writing, shall any Contributor be 193 | liable to You for damages, including any direct, indirect, special, 194 | incidental, or consequential damages of any character arising as a 195 | result of this License or out of the use or inability to use the 196 | Work (including but not limited to damages for loss of goodwill, 197 | work stoppage, computer failure or malfunction, or any and all 198 | other commercial damages or losses), even if such Contributor 199 | has been advised of the possibility of such damages. 200 | 201 | 9. Accepting Warranty or Additional Liability. While redistributing 202 | the Work or Derivative Works thereof, You may choose to offer, 203 | and charge a fee for, acceptance of support, warranty, indemnity, 204 | or other liability obligations and/or rights consistent with this 205 | License. However, in accepting such obligations, You may act only 206 | on Your own behalf and on Your sole responsibility, not on behalf 207 | of any other Contributor, and only if You agree to indemnify, 208 | defend, and hold each Contributor harmless for any liability 209 | incurred by, or claims asserted against, such Contributor by reason 210 | of your accepting any such warranty or additional liability. 211 | 212 | END OF TERMS AND CONDITIONS 213 | 214 | APPENDIX: How to apply the Apache License to your work. 215 | 216 | To apply the Apache License to your work, attach the following 217 | boilerplate notice, with the fields enclosed by brackets "[]" 218 | replaced with your own identifying information. (Don't include 219 | the brackets!) The text should be enclosed in the appropriate 220 | comment syntax for the file format. We also recommend that a 221 | file or class name and description of purpose be included on the 222 | same "printed page" as the copyright notice for easier 223 | identification within third-party archives. 224 | 225 | Copyright [yyyy] [name of copyright owner] 226 | 227 | Licensed under the Apache License, Version 2.0 (the "License"); 228 | you may not use this file except in compliance with the License. 229 | You may obtain a copy of the License at 230 | 231 | http://www.apache.org/licenses/LICENSE-2.0 232 | 233 | Unless required by applicable law or agreed to in writing, software 234 | distributed under the License is distributed on an "AS IS" BASIS, 235 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 236 | See the License for the specific language governing permissions and 237 | limitations under the License. 238 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | text-encoding 2 | ============== 3 | 4 | This is a polyfill for the [Encoding Living 5 | Standard](https://encoding.spec.whatwg.org/) API for the Web, allowing 6 | encoding and decoding of textual data to and from Typed Array buffers 7 | for binary data in JavaScript. 8 | 9 | By default it adheres to the spec and does not support *encoding* to 10 | legacy encodings, only *decoding*. It is also implemented to match the 11 | specification's algorithms, rather than for performance. The intended 12 | use is within Web pages, so it has no dependency on server frameworks 13 | or particular module schemes. 14 | 15 | Basic examples and tests are included. 16 | 17 | ### Install ### 18 | 19 | There are a few ways you can get and use the `text-encoding` library. 20 | 21 | ### HTML Page Usage ### 22 | 23 | Clone the repo and include the files directly: 24 | 25 | ```html 26 | 27 | 28 | 29 | ``` 30 | 31 | This is the only use case the developer cares about. If you want those 32 | fancy module and/or package manager things that are popular these days 33 | you should probably use a different library. 34 | 35 | #### Package Managers #### 36 | 37 | The package is published to **npm** and **bower** as `text-encoding`. 38 | Use through these is not really supported, since they aren't used by 39 | the developer of the library. Using `require()` in interesting ways 40 | probably breaks. Patches welcome, as long as they don't break the 41 | basic use of the files via ` 105 | ``` 106 | 107 | To support the legacy encodings (which may be stateful), the 108 | TextEncoder `encode()` method accepts an optional dictionary and 109 | `stream` option, e.g. `encoder.encode(string, {stream: true});` This 110 | is not needed for standard encoding since the input is always in 111 | complete code points. 112 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "text-encoding", 3 | "version": "0.7.0", 4 | "homepage": "https://github.com/inexorabletash/text-encoding", 5 | "authors": [ 6 | "Joshua Bell ", 7 | "Rick Eyre ", 8 | "Eugen Podaru ", 9 | "Filip Dupanović ", 10 | "Anne van Kesteren ", 11 | "Author: Francis Avila ", 12 | "Michael J. Ryan ", 13 | "Pierre Queinnec ", 14 | "Zack Weinberg " 15 | ], 16 | "description": "Polyfill for the Encoding Living Standard's API", 17 | "main": [ "lib/encoding.js", "lib/encoding-indexes.js" ], 18 | "keywords": [ 19 | "decoding", 20 | "encoding", 21 | "living", 22 | "standards" 23 | ], 24 | "license": "(Unlicense OR Apache-2.0)", 25 | "ignore": [ 26 | "**/.*", 27 | "test", 28 | "*examples*.html" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /examples-no-indexes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 59 | -------------------------------------------------------------------------------- /examples.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 60 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | var encoding = require("./lib/encoding.js"); 5 | 6 | module.exports = { 7 | TextEncoder: encoding.TextEncoder, 8 | TextDecoder: encoding.TextDecoder, 9 | }; 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "text-encoding", 3 | "author": "Joshua Bell ", 4 | "contributors": [ 5 | "Joshua Bell ", 6 | "Rick Eyre ", 7 | "Eugen Podaru ", 8 | "Filip Dupanović ", 9 | "Anne van Kesteren ", 10 | "Author: Francis Avila ", 11 | "Michael J. Ryan ", 12 | "Pierre Queinnec ", 13 | "Zack Weinberg " 14 | ], 15 | "version": "0.7.0", 16 | "description": "Polyfill for the Encoding Living Standard's API.", 17 | "main": "index.js", 18 | "files": [ 19 | "index.js", 20 | "lib/encoding.js", 21 | "lib/encoding-indexes.js" 22 | ], 23 | "repository": { 24 | "type": "git", 25 | "url": "https://github.com/inexorabletash/text-encoding.git" 26 | }, 27 | "keywords": [ 28 | "encoding", 29 | "decoding", 30 | "living standard" 31 | ], 32 | "bugs": { 33 | "url": "https://github.com/inexorabletash/text-encoding/issues" 34 | }, 35 | "homepage": "https://github.com/inexorabletash/text-encoding", 36 | "license": "(Unlicense OR Apache-2.0)" 37 | } 38 | -------------------------------------------------------------------------------- /test/test-gb18030.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | test(function() { 5 | var cases = [ 6 | {bytes: [148, 57, 218, 51], string: '\uD83D\uDCA9' } // U+1F4A9 PILE OF POO 7 | ]; 8 | 9 | cases.forEach(function(c) { 10 | assert_equals(new TextDecoder('gb18030').decode(new Uint8Array(c.bytes)), 11 | c.string); 12 | }); 13 | }, 'gb18030 ranges'); 14 | -------------------------------------------------------------------------------- /test/test-iso-2022-jp.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | test( 5 | function () { 6 | var bytes = [27,36,66,33,33,33,34,33,35,33,36,33,37,33,38,33,39,33,40,33,41,33,42,33,43,33,44,33,45,33,46,33,47,33,48,33,49,33,50,33,51,33,52,33,53,33,54,33,55,33,56,33,57,33,58,33,59,33,60,33,61,33,62,33,63,33,64,33,67,33,68,33,69,33,70,33,71,33,72,33,73,33,74,33,75,33,76,33,77,33,78,33,79,33,80,33,81,33,82,33,83,33,84,33,85,33,86,33,87,33,88,33,89,33,90,33,91,33,92,33,94,33,95,33,96,33,97,33,98,33,99,33,100,33,101,33,102,33,103,33,104,33,105,33,106,33,107,33,108,33,109,33,110,33,111,33,112,33,115,33,116,33,117,33,118,33,119,33,120,33,121,33,122,33,123,33,124,33,125,33,126,34,33,34,34,34,35,34,36,34,37,34,38,34,39,34,40,34,41,34,42,34,43,34,44,34,45,34,46,34,58,34,59,34,60,34,61,34,62,34,63,34,64,34,65,34,74,34,75,34,77,34,78,34,79,34,80,34,92,34,93,34,94,34,95,34,96,34,97,34,98,34,99,34,100,34,101,34,102,34,103,34,104,34,105,34,106,34,114,34,115,34,116,34,117,34,118,34,119,34,120,34,121,34,126,35,48,35,49,35,50,35,51,35,52,35,53,35,54,35,55,35,56,35,57,35,65,35,66,35,67,35,68,35,69,35,70,35,71,35,72,35,73,35,74,35,75,35,76,35,77,35,78,35,79,35,80,35,81,35,82,35,83,35,84,35,85,35,86,35,87,35,88,35,89,35,90,35,97,35,98,35,99,35,100,35,101,35,102,35,103,35,104,35,105,35,106,35,107,35,108,35,109,35,110,35,111,35,112,35,113,35,114,35,115,35,116,35,117,35,118,35,119,35,120,35,121,35,122,36,33,36,34,36,35,36,36,36,37,36,38,36,39,36,40,36,41,36,42,36,43,36,44,36,45,36,46,36,47,36,48,36,49,36,50,36,51,36,52,36,53,36,54,36,55,36,56,36,57,36,58,36,59,36,60,36,61,36,62,36,63,36,64,36,65,36,66,36,67,36,68,36,69,36,70,36,71,36,72,36,73,36,74,36,75,36,76,36,77,36,78,36,79,36,80,36,81,36,82,36,83,36,84,36,85,36,86,36,87,36,88,36,89,36,90,36,91,36,92,36,93,36,94,36,95,36,96,36,97,36,98,36,99,36,100,36,101,36,102,36,103,36,104,36,105,36,106,36,107,36,108,36,109,36,110,36,111,36,112,36,113,36,114,36,115,37,33,37,34,37,35,37,36,37,37,37,38,37,39,37,40,37,41,37,42,37,43,37,44,37,45,37,46,37,47,37,48,37,49,37,50,37,51,37,52,37,53,37,54,37,55,37,56,37,57,37,58,37,59,37,60,37,61,37,62,37,63,37,64,37,65,37,66,37,67,37,68,37,69,37,70,37,71,37,72,37,73,37,74,37,75,37,76,37,77,37,78,37,79,37,80,37,81,37,82,37,83,37,84,37,85,37,86,37,87,37,88,37,89,37,90,37,91,37,92,37,93,37,94,37,95,37,96,37,97,37,98,37,99,37,100,37,101,37,102,37,103,37,104,37,105,37,106,37,107,37,108,37,109,37,110,37,111,37,112,37,113,37,114,37,115,37,116,37,117,37,118,38,33,38,34,38,35,38,36,38,37,38,38,38,39,38,40,38,41,38,42,38,43,38,44,38,45,38,46,38,47,38,48,38,49,38,50,38,51,38,52,38,53,38,54,38,55,38,56,38,65,38,66,38,67,38,68,38,69,38,70,38,71,38,72,38,73,38,74,38,75,38,76,38,77,38,78,38,79,38,80,38,81,38,82,38,83,38,84,38,85,38,86,38,87,38,88,39,33,39,34,39,35,39,36,39,37,39,38,39,39,39,40,39,41,39,42,39,43,39,44,39,45,39,46,39,47,39,48,39,49,39,50,39,51,39,52,39,53,39,54,39,55,39,56,39,57,39,58,39,59,39,60,39,61,39,62,39,63,39,64,39,65,39,81,39,82,39,83,39,84,39,85,39,86,39,87,39,88,39,89,39,90,39,91,39,92,39,93,39,94,39,95,39,96,39,97,39,98,39,99,39,100,39,101,39,102,39,103,39,104,39,105,39,106,39,107,39,108,39,109,39,110,39,111,39,112,39,113,40,33,40,34,40,35,40,36,40,37,40,38,40,39,40,40,40,41,40,42,40,43,40,44,40,45,40,46,40,47,40,48,40,49,40,50,40,51,40,52,40,53,40,54,40,55,40,56,40,57,40,58,40,59,40,60,40,61,40,62,40,63,40,64,34,98,34,97,34,105,34,101,34,93,34,92,34,104,34,65,34,64,48,33,48,34,48,35,48,36,48,37,48,38,48,39,48,40,48,41,48,42,48,43,48,44,48,45,48,46,48,47,48,48,48,49,48,50,48,51,48,52,48,53,48,54,48,55,48,56,48,57,48,58,48,59,48,60,48,61,48,62,48,63,48,64,48,65,48,66,48,67,48,68,48,69,48,70,48,71,48,72,48,73,48,74,48,75,48,76,48,77,48,78,48,79,48,80,48,81,48,82,48,83,48,84,48,85,48,86,48,87,48,88,48,89,48,90,48,91,48,92,48,93,48,94,48,95,48,96,48,97,48,98,48,99,48,100,48,101,48,102,48,103,48,104,48,105,48,106,48,107,48,108,48,109,48,110,48,111,48,112,48,113,48,114,48,115,48,116,48,117,48,118,48,119,48,120,48,121,48,122,48,123,48,124,48,125,48,126,49,33,49,34,49,35,49,36,49,37,49,38,49,39,49,40,49,41,49,42,49,43,49,44,49,45,49,46,49,47,49,48,49,49,49,50,49,51,49,52,49,53,49,54,49,55,49,56,49,57,49,58,49,59,49,60,49,61,49,62,49,63,49,64,49,65,49,66,49,67,49,68,49,69,49,70,49,71,49,72,49,73,49,74,49,75,49,76,49,77,49,78,49,79,49,80,49,81,49,82,49,83,49,84,49,85,49,86,49,87,49,88,49,89,49,90,49,91,49,92,49,93,49,94,49,95,49,96,49,97,49,98,49,99,49,100,49,101,49,102,49,103,49,104,49,105,49,106,49,107,49,108,49,109,49,110,49,111,49,112,49,113,49,114,49,115,49,116,49,117,49,118,49,119,49,120,49,121,49,122,49,123,49,124,49,125,49,126,50,33,50,34,50,35,50,36,50,37,50,38,50,39,50,40,50,41,50,42,50,43,50,44,50,45,50,46,50,47,50,48,50,49,50,50,50,51,50,52,50,53,50,54,50,55,50,56,50,57,50,58,50,59,50,60,50,61,50,62,50,63,50,64,50,65,50,66,50,67,50,68,50,69,50,70,50,71,50,72,50,73,50,74,50,75,50,76,50,77,50,78,50,79,50,80,50,81,50,82,50,83,50,84,50,85,50,86,50,87,50,88,50,89,50,90,50,91,50,92,50,93,50,94,50,95,50,96,50,97,50,98,50,99,50,100,50,101,50,102,50,103,50,104,50,105,50,106,50,107,50,108,50,109,50,110,50,111,50,112,50,113,50,114,50,115,50,116,50,117,50,118,50,119,50,120,50,121,50,122,50,123,50,124,50,125,50,126,51,33,51,34,51,35,51,36,51,37,51,38,51,39,51,40,51,41,51,42,51,43,51,44,51,45,51,46,51,47,51,48,51,49,51,50,51,51,51,52,51,53,51,54,51,55,51,56,51,57,51,58,51,59,51,60,51,61,51,62,51,63,51,64,51,65,51,66,51,67,51,68,51,69,51,70,51,71,51,72,51,73,51,74,51,75,51,76,51,77,51,78,51,79,51,80,51,81,51,82,51,83,51,84,51,85,51,86,51,87,51,88,51,89,51,90,51,91,51,92,51,93,51,94,51,95,51,96,51,97,51,98,51,99,51,100,51,101,51,102,51,103,51,104,51,105,51,106,51,107,51,108,51,109,51,110,51,111,51,112,51,113,51,114,51,115,51,116,51,117,51,118,51,119,51,120,51,121,51,122,51,123,51,124,51,125,51,126,52,33,52,34,52,35,52,36,52,37,52,38,52,39,52,40,52,41,52,42,52,43,52,44,52,45,52,46,52,47,52,48,52,49,52,50,52,51,52,52,52,53,52,54,52,55,52,56,52,57,52,58,52,59,52,60,52,61,52,62,52,63,52,64,52,65,52,66,52,67,52,68,52,69,52,70,52,71,52,72,52,73,52,74,52,75,52,76,52,77,52,78,52,79,52,80,52,81,52,82,52,83,52,84,52,85,52,86,52,87,52,88,52,89,52,90,52,91,52,92,52,93,52,94,52,95,52,96,52,97,52,98,52,99,52,100,52,101,52,102,52,103,52,104,52,105,52,106,52,107,52,108,52,109,52,110,52,111,52,112,52,113,52,114,52,115,52,116,52,117,52,118,52,119,52,120,52,121,52,122,52,123,52,124,52,125,52,126,53,33,53,34,53,35,53,36,53,37,53,38,53,39,53,40,53,41,53,42,53,43,53,44,53,45,53,46,53,47,53,48,53,49,53,50,53,51,53,52,53,53,53,54,53,55,53,56,53,57,53,58,53,59,53,60,53,61,53,62,53,63,53,64,53,65,53,66,53,67,53,68,53,69,53,70,53,71,53,72,53,73,53,74,53,75,53,76,53,77,53,78,53,79,53,80,53,81,53,82,53,83,53,84,53,85,53,86,53,87,53,88,53,89,53,90,53,91,53,92,53,93,53,94,53,95,53,96,53,97,53,98,53,99,53,100,53,101,53,102,53,103,53,104,53,105,53,106,53,107,53,108,53,109,53,110,53,111,53,112,53,113,53,114,53,115,53,116,53,117,53,118,53,119,53,120,53,121,53,122,53,123,53,124,53,125,53,126,54,33,54,34,54,35,54,36,54,37,54,38,54,39,54,40,54,41,54,42,54,43,54,44,54,45,54,46,54,47,54,48,54,49,54,50,54,51,54,52,54,53,54,54,54,55,54,56,54,57,54,58,54,59,54,60,54,61,54,62,54,63,54,64,54,65,54,66,54,67,54,68,54,69,54,70,54,71,54,72,54,73,54,74,54,75,54,76,54,77,54,78,54,79,54,80,54,81,54,82,54,83,54,84,54,85,54,86,54,87,54,88,54,89,54,90,54,91,54,92,54,93,54,94,54,95,54,96,54,97,54,98,54,99,54,100,54,101,54,102,54,103,54,104,54,105,54,106,54,107,54,108,54,109,54,110,54,111,54,112,54,113,54,114,54,115,54,116,54,117,54,118,54,119,54,120,54,121,54,122,54,123,54,124,54,125,54,126,55,33,55,34,55,35,55,36,55,37,55,38,55,39,55,40,55,41,55,42,55,43,55,44,55,45,55,46,55,47,55,48,55,49,55,50,55,51,55,52,55,53,55,54,55,55,55,56,55,57,55,58,55,59,55,60,55,61,55,62,55,63,55,64,55,65,55,66,55,67,55,68,55,69,55,70,55,71,55,72,55,73,55,74,55,75,55,76,55,77,55,78,55,79,55,80,55,81,55,82,55,83,55,84,55,85,55,86,55,87,55,88,55,89,55,90,55,91,55,92,55,93,55,94,55,95,55,96,55,97,55,98,55,99,55,100,55,101,55,102,55,103,55,104,55,105,55,106,55,107,55,108,55,109,55,110,55,111,55,112,55,113,55,114,55,115,55,116,55,117,55,118,55,119,55,120,55,121,55,122,55,123,55,124,55,125,55,126,56,33,56,34,56,35,56,36,56,37,56,38,56,39,56,40,56,41,56,42,56,43,56,44,56,45,56,46,56,47,56,48,56,49,56,50,56,51,56,52,56,53,56,54,56,55,56,56,56,57,56,58,56,59,56,60,56,61,56,62,56,63,56,64,56,65,56,66,56,67,56,68,56,69,56,70,56,71,56,72,56,73,56,74,56,75,56,76,56,77,56,78,56,79,56,80,56,81,56,82,56,83,56,84,56,85,56,86,56,87,56,88,56,89,56,90,56,91,56,92,56,93,56,94,56,95,56,96,56,97,56,98,56,99,56,100,56,101,56,102,56,103,56,104,56,105,56,106,56,107,56,108,56,109,56,110,56,111,56,112,56,113,56,114,56,115,56,116,56,117,56,118,56,119,56,120,56,121,56,122,56,123,56,124,56,125,56,126,57,33,57,34,57,35,57,36,57,37,57,38,57,39,57,40,57,41,57,42,57,43,57,44,57,45,57,46,57,47,57,48,57,49,57,50,57,51,57,52,57,53,57,54,57,55,57,56,57,57,57,58,57,59,57,60,57,61,57,62,57,63,57,64,57,65,57,66,57,67,57,68,57,69,57,70,57,71,57,72,57,73,57,74,57,75,57,76,57,77,57,78,57,79,57,80,57,81,57,82,57,83,57,84,57,85,57,86,57,87,57,88,57,89,57,90,57,91,57,92,57,93,57,94,57,95,57,96,57,97,57,98,57,99,57,100,57,101,57,102,57,103,57,104,57,105,57,106,57,107,57,108,57,109,57,110,57,111,57,112,57,113,57,114,57,115,57,116,57,117,57,118,57,119,57,120,57,121,57,122,57,123,57,124,57,125,57,126,58,33,58,34,58,35,58,36,58,37,58,38,58,39,58,40,58,41,58,42,58,43,58,44,58,45,58,46,58,47,58,48,58,49,58,50,58,51,58,52,58,53,58,54,58,55,58,56,58,57,58,58,58,59,58,60,58,61,58,62,58,63,58,64,58,65,58,66,58,67,58,68,58,69,58,70,58,71,58,72,58,73,58,74,58,75,58,76,58,77,58,78,58,79,58,80,58,81,58,82,58,83,58,84,58,85,58,86,58,87,58,88,58,89,58,90,58,91,58,92,58,93,58,94,58,95,58,96,58,97,58,98,58,99,58,100,58,101,58,102,58,103,58,104,58,105,58,106,58,107,58,108,58,109,58,110,58,111,58,112,58,113,58,114,58,115,58,116,58,117,58,118,58,119,58,120,58,121,58,122,58,123,58,124,58,125,58,126,59,33,59,34,59,35,59,36,59,37,59,38,59,39,59,40,59,41,59,42,59,43,59,44,59,45,59,46,59,47,59,48,59,49,59,50,59,51,59,52,59,53,59,54,59,55,59,56,59,57,59,58,59,59,59,60,59,61,59,62,59,63,59,64,59,65,59,66,59,67,59,68,59,69,59,70,59,71,59,72,59,73,59,74,59,75,59,76,59,77,59,78,59,79,59,80,59,81,59,82,59,83,59,84,59,85,59,86,59,87,59,88,59,89,59,90,59,91,59,92,59,93,59,94,59,95,59,96,59,97,59,98,59,99,59,100,59,101,59,102,59,103,59,104,59,105,59,106,59,107,59,108,59,109,59,110,59,111,59,112,59,113,59,114,59,115,59,116,59,117,59,118,59,119,59,120,59,121,59,122,59,123,59,124,59,125,59,126,60,33,60,34,60,35,60,36,60,37,60,38,60,39,60,40,60,41,60,42,60,43,60,44,60,45,60,46,60,47,60,48,60,49,60,50,60,51,60,52,60,53,60,54,60,55,60,56,60,57,60,58,60,59,60,60,60,61,60,62,60,63,60,64,60,65,60,66,60,67,60,68,60,69,60,70,60,71,60,72,60,73,60,74,60,75,60,76,60,77,60,78,60,79,60,80,60,81,60,82,60,83,60,84,60,85,60,86,60,87,60,88,60,89,60,90,60,91,60,92,60,93,60,94,60,95,60,96,60,97,60,98,60,99,60,100,60,101,60,102,60,103,60,104,60,105,60,106,60,107,60,108,60,109,60,110,60,111,60,112,60,113,60,114,60,115,60,116,60,117,60,118,60,119,60,120,60,121,60,122,60,123,60,124,60,125,60,126,61,33,61,34,61,35,61,36,61,37,61,38,61,39,61,40,61,41,61,42,61,43,61,44,61,45,61,46,61,47,61,48,61,49,61,50,61,51,61,52,61,53,61,54,61,55,61,56,61,57,61,58,61,59,61,60,61,61,61,62,61,63,61,64,61,65,61,66,61,67,61,68,61,69,61,70,61,71,61,72,61,73,61,74,61,75,61,76,61,77,61,78,61,79,61,80,61,81,61,82,61,83,61,84,61,85,61,86,61,87,61,88,61,89,61,90,61,91,61,92,61,93,61,94,61,95,61,96,61,97,61,98,61,99,61,100,61,101,61,102,61,103,61,104,61,105,61,106,61,107,61,108,61,109,61,110,61,111,61,112,61,113,61,114,61,115,61,116,61,117,61,118,61,119,61,120,61,121,61,122,61,123,61,124,61,125,61,126,62,33,62,34,62,35,62,36,62,37,62,38,62,39,62,40,62,41,62,42,62,43,62,44,62,45,62,46,62,47,62,48,62,49,62,50,62,51,62,52,62,53,62,54,62,55,62,56,62,57,62,58,62,59,62,60,62,61,62,62,62,63,62,64,62,65,62,66,62,67,62,68,62,69,62,70,62,71,62,72,62,73,62,74,62,75,62,76,62,77,62,78,62,79,62,80,62,81,62,82,62,83,62,84,62,85,62,86,62,87,62,88,62,89,62,90,62,91,62,92,62,93,62,94,62,95,62,96,62,97,62,98,62,99,62,100,62,101,62,102,62,103,62,104,62,105,62,106,62,107,62,108,62,109,62,110,62,111,62,112,62,113,62,114,62,115,62,116,62,117,62,118,62,119,62,120,62,121,62,122,62,123,62,124,62,125,62,126,63,33,63,34,63,35,63,36,63,37,63,38,63,39,63,40,63,41,63,42,63,43,63,44,63,45,63,46,63,47,63,48,63,49,63,50,63,51,63,52,63,53,63,54,63,55,63,56,63,57,63,58,63,59,63,60,63,61,63,62,63,63,63,64,63,65,63,66,63,67,63,68,63,69,63,70,63,71,63,72,63,73,63,74,63,75,63,76,63,77,63,78,63,79,63,80,63,81,63,82,63,83,63,84,63,85,63,86,63,87,63,88,63,89,63,90,63,91,63,92,63,93,63,94,63,95,63,96,63,97,63,98,63,99,63,100,63,101,63,102,63,103,63,104,63,105,63,106,63,107,63,108,63,109,63,110,63,111,63,112,63,113,63,114,63,115,63,116,63,117,63,118,63,119,63,120,63,121,63,122,63,123,63,124,63,125,63,126,64,33,64,34,64,35,64,36,64,37,64,38,64,39,64,40,64,41,64,42,64,43,64,44,64,45,64,46,64,47,64,48,64,49,64,50,64,51,64,52,64,53,64,54,64,55,64,56,64,57,64,58,64,59,64,60,64,61,64,62,64,63,64,64,64,65,64,66,64,67,64,68,64,69,64,70,64,71,64,72,64,73,64,74,64,75,64,76,64,77,64,78,64,79,64,80,64,81,64,82,64,83,64,84,64,85,64,86,64,87,64,88,64,89,64,90,64,91,64,92,64,93,64,94,64,95,64,96,64,97,64,98,64,99,64,100,64,101,64,102,64,103,64,104,64,105,64,106,64,107,64,108,64,109,64,110,64,111,64,112,64,113,64,114,64,115,64,116,64,117,64,118,64,119,64,120,64,121,64,122,64,123,64,124,64,125,64,126,65,33,65,34,65,35,65,36,65,37,65,38,65,39,65,40,65,41,65,42,65,43,65,44,65,45,65,46,65,47,65,48,65,49,65,50,65,51,65,52,65,53,65,54,65,55,65,56,65,57,65,58,65,59,65,60,65,61,65,62,65,63,65,64,65,65,65,66,65,67,65,68,65,69,65,70,65,71,65,72,65,73,65,74,65,75,65,76,65,77,65,78,65,79,65,80,65,81,65,82,65,83,65,84,65,85,65,86,65,87,65,88,65,89,65,90,65,91,65,92,65,93,65,94,65,95,65,96,65,97,65,98,65,99,65,100,65,101,65,102,65,103,65,104,65,105,65,106,65,107,65,108,65,109,65,110,65,111,65,112,65,113,65,114,65,115,65,116,65,117,65,118,65,119,65,120,65,121,65,122,65,123,65,124,65,125,65,126,66,33,66,34,66,35,66,36,66,37,66,38,66,39,66,40,66,41,66,42,66,43,66,44,66,45,66,46,66,47,66,48,66,49,66,50,66,51,66,52,66,53,66,54,66,55,66,56,66,57,66,58,66,59,66,60,66,61,66,62,66,63,66,64,66,65,66,66,66,67,66,68,66,69,66,70,66,71,66,72,66,73,66,74,66,75,66,76,66,77,66,78,66,79,66,80,66,81,66,82,66,83,66,84,66,85,66,86,66,87,66,88,66,89,66,90,66,91,66,92,66,93,66,94,66,95,66,96,66,97,66,98,66,99,66,100,66,101,66,102,66,103,66,104,66,105,66,106,66,107,66,108,66,109,66,110,66,111,66,112,66,113,66,114,66,115,66,116,66,117,66,118,66,119,66,120,66,121,66,122,66,123,66,124,66,125,66,126,67,33,67,34,67,35,67,36,67,37,67,38,67,39,67,40,67,41,67,42,67,43,67,44,67,45,67,46,67,47,67,48,67,49,67,50,67,51,67,52,67,53,67,54,67,55,67,56,67,57,67,58,67,59,67,60,67,61,67,62,67,63,67,64,67,65,67,66,67,67,67,68,67,69,67,70,67,71,67,72,67,73,67,74,67,75,67,76,67,77,67,78,67,79,67,80,67,81,67,82,67,83,67,84,67,85,67,86,67,87,67,88,67,89,67,90,67,91,67,92,67,93,67,94,67,95,67,96,67,97,67,98,67,99,67,100,67,101,67,102,67,103,67,104,67,105,67,106,67,107,67,108,67,109,67,110,67,111,67,112,67,113,67,114,67,115,67,116,67,117,67,118,67,119,67,120,67,121,67,122,67,123,67,124,67,125,67,126,68,33,68,34,68,35,68,36,68,37,68,38,68,39,68,40,68,41,68,42,68,43,68,44,68,45,68,46,68,47,68,48,68,49,68,50,68,51,68,52,68,53,68,54,68,55,68,56,68,57,68,58,68,59,68,60,68,61,68,62,68,63,68,64,68,65,68,66,68,67,68,68,68,69,68,70,68,71,68,72,68,73,68,74,68,75,68,76,68,77,68,78,68,79,68,80,68,81,68,82,68,83,68,84,68,85,68,86,68,87,68,88,68,89,68,90,68,91,68,92,68,93,68,94,68,95,68,96,68,97,68,98,68,99,68,100,68,101,68,102,68,103,68,104,68,105,68,106,68,107,68,108,68,109,68,110,68,111,68,112,68,113,68,114,68,115,68,116,68,117,68,118,68,119,68,120,68,121,68,122,68,123,68,124,68,125,68,126,69,33,69,34,69,35,69,36,69,37,69,38,69,39,69,40,69,41,69,42,69,43,69,44,69,45,69,46,69,47,69,48,69,49,69,50,69,51,69,52,69,53,69,54,69,55,69,56,69,57,69,58,69,59,69,60,69,61,69,62,69,63,69,64,69,65,69,66,69,67,69,68,69,69,69,70,69,71,69,72,69,73,69,74,69,75,69,76,69,77,69,78,69,79,69,80,69,81,69,82,69,83,69,84,69,85,69,86,69,87,69,88,69,89,69,90,69,91,69,92,69,93,69,94,69,95,69,96,69,97,69,98,69,99,69,100,69,101,69,102,69,103,69,104,69,105,69,106,69,107,69,108,69,109,69,110,69,111,69,112,69,113,69,114,69,115,69,116,69,117,69,118,69,119,69,120,69,121,69,122,69,123,69,124,69,125,69,126,70,33,70,34,70,35,70,36,70,37,70,38,70,39,70,40,70,41,70,42,70,43,70,44,70,45,70,46,70,47,70,48,70,49,70,50,70,51,70,52,70,53,70,54,70,55,70,56,70,57,70,58,70,59,70,60,70,61,70,62,70,63,70,64,70,65,70,66,70,67,70,68,70,69,70,70,70,71,70,72,70,73,70,74,70,75,70,76,70,77,70,78,70,79,70,80,70,81,70,82,70,83,70,84,70,85,70,86,70,87,70,88,70,89,70,90,70,91,70,92,70,93,70,94,70,95,70,96,70,97,70,98,70,99,70,100,70,101,70,102,70,103,70,104,70,105,70,106,70,107,70,108,70,109,70,110,70,111,70,112,70,113,70,114,70,115,70,116,70,117,70,118,70,119,70,120,70,121,70,122,70,123,70,124,70,125,70,126,71,33,71,34,71,35,71,36,71,37,71,38,71,39,71,40,71,41,71,42,71,43,71,44,71,45,71,46,71,47,71,48,71,49,71,50,71,51,71,52,71,53,71,54,71,55,71,56,71,57,71,58,71,59,71,60,71,61,71,62,71,63,71,64,71,65,71,66,71,67,71,68,71,69,71,70,71,71,71,72,71,73,71,74,71,75,71,76,71,77,71,78,71,79,71,80,71,81,71,82,71,83,71,84,71,85,71,86,71,87,71,88,71,89,71,90,71,91,71,92,71,93,71,94,71,95,71,96,71,97,71,98,71,99,71,100,71,101,71,102,71,103,71,104,71,105,71,106,71,107,71,108,71,109,71,110,71,111,71,112,71,113,71,114,71,115,71,116,71,117,71,118,71,119,71,120,71,121,71,122,71,123,71,124,71,125,71,126,72,33,72,34,72,35,72,36,72,37,72,38,72,39,72,40,72,41,72,42,72,43,72,44,72,45,72,46,72,47,72,48,72,49,72,50,72,51,72,52,72,53,72,54,72,55,72,56,72,57,72,58,72,59,72,60,72,61,72,62,72,63,72,64,72,65,72,66,72,67,72,68,72,69,72,70,72,71,72,72,72,73,72,74,72,75,72,76,72,77,72,78,72,79,72,80,72,81,72,82,72,83,72,84,72,85,72,86,72,87,72,88,72,89,72,90,72,91,72,92,72,93,72,94,72,95,72,96,72,97,72,98,72,99,72,100,72,101,72,102,72,103,72,104,72,105,72,106,72,107,72,108,72,109,72,110,72,111,72,112,72,113,72,114,72,115,72,116,72,117,72,118,72,119,72,120,72,121,72,122,72,123,72,124,72,125,72,126,73,33,73,34,73,35,73,36,73,37,73,38,73,39,73,40,73,41,73,42,73,43,73,44,73,45,73,46,73,47,73,48,73,49,73,50,73,51,73,52,73,53,73,54,73,55,73,56,73,57,73,58,73,59,73,60,73,61,73,62,73,63,73,64,73,65,73,66,73,67,73,68,73,69,73,70,73,71,73,72,73,73,73,74,73,75,73,76,73,77,73,78,73,79,73,80,73,81,73,82,73,83,73,84,73,85,73,86,73,87,73,88,73,89,73,90,73,91,73,92,73,93,73,94,73,95,73,96,73,97,73,98,73,99,73,100,73,101,73,102,73,103,73,104,73,105,73,106,73,107,73,108,73,109,73,110,73,111,73,112,73,113,73,114,73,115,73,116,73,117,73,118,73,119,73,120,73,121,73,122,73,123,73,124,73,125,73,126,74,33,74,34,74,35,74,36,74,37,74,38,74,39,74,40,74,41,74,42,74,43,74,44,74,45,74,46,74,47,74,48,74,49,74,50,74,51,74,52,74,53,74,54,74,55,74,56,74,57,74,58,74,59,74,60,74,61,74,62,74,63,74,64,74,65,74,66,74,67,74,68,74,69,74,70,74,71,74,72,74,73,74,74,74,75,74,76,74,77,74,78,74,79,74,80,74,81,74,82,74,83,74,84,74,85,74,86,74,87,74,88,74,89,74,90,74,91,74,92,74,93,74,94,74,95,74,96,74,97,74,98,74,99,74,100,74,101,74,102,74,103,74,104,74,105,74,106,74,107,74,108,74,109,74,110,74,111,74,112,74,113,74,114,74,115,74,116,74,117,74,118,74,119,74,120,74,121,74,122,74,123,74,124,74,125,74,126,75,33,75,34,75,35,75,36,75,37,75,38,75,39,75,40,75,41,75,42,75,43,75,44,75,45,75,46,75,47,75,48,75,49,75,50,75,51,75,52,75,53,75,54,75,55,75,56,75,57,75,58,75,59,75,60,75,61,75,62,75,63,75,64,75,65,75,66,75,67,75,68,75,69,75,70,75,71,75,72,75,73,75,74,75,75,75,76,75,77,75,78,75,79,75,80,75,81,75,82,75,83,75,84,75,85,75,86,75,87,75,88,75,89,75,90,75,91,75,92,75,93,75,94,75,95,75,96,75,97,75,98,75,99,75,100,75,101,75,102,75,103,75,104,75,105,75,106,75,107,75,108,75,109,75,110,75,111,75,112,75,113,75,114,75,115,75,116,75,117,75,118,75,119,75,120,75,121,75,122,75,123,75,124,75,125,75,126,76,33,76,34,76,35,76,36,76,37,76,38,76,39,76,40,76,41,76,42,76,43,76,44,76,45,76,46,76,47,76,48,76,49,76,50,76,51,76,52,76,53,76,54,76,55,76,56,76,57,76,58,76,59,76,60,76,61,76,62,76,63,76,64,76,65,76,66,76,67,76,68,76,69,76,70,76,71,76,72,76,73,76,74,76,75,76,76,76,77,76,78,76,79,76,80,76,81,76,82,76,83,76,84,76,85,76,86,76,87,76,88,76,89,76,90,76,91,76,92,76,93,76,94,76,95,76,96,76,97,76,98,76,99,76,100,76,101,76,102,76,103,76,104,76,105,76,106,76,107,76,108,76,109,76,110,76,111,76,112,76,113,76,114,76,115,76,116,76,117,76,118,76,119,76,120,76,121,76,122,76,123,76,124,76,125,76,126,77,33,77,34,77,35,77,36,77,37,77,38,77,39,77,40,77,41,77,42,77,43,77,44,77,45,77,46,77,47,77,48,77,49,77,50,77,51,77,52,77,53,77,54,77,55,77,56,77,57,77,58,77,59,77,60,77,61,77,62,77,63,77,64,77,65,77,66,77,67,77,68,77,69,77,70,77,71,77,72,77,73,77,74,77,75,77,76,77,77,77,78,77,79,77,80,77,81,77,82,77,83,77,84,77,85,77,86,77,87,77,88,77,89,77,90,77,91,77,92,77,93,77,94,77,95,77,96,77,97,77,98,77,99,77,100,77,101,77,102,77,103,77,104,77,105,77,106,77,107,77,108,77,109,77,110,77,111,77,112,77,113,77,114,77,115,77,116,77,117,77,118,77,119,77,120,77,121,77,122,77,123,77,124,77,125,77,126,78,33,78,34,78,35,78,36,78,37,78,38,78,39,78,40,78,41,78,42,78,43,78,44,78,45,78,46,78,47,78,48,78,49,78,50,78,51,78,52,78,53,78,54,78,55,78,56,78,57,78,58,78,59,78,60,78,61,78,62,78,63,78,64,78,65,78,66,78,67,78,68,78,69,78,70,78,71,78,72,78,73,78,74,78,75,78,76,78,77,78,78,78,79,78,80,78,81,78,82,78,83,78,84,78,85,78,86,78,87,78,88,78,89,78,90,78,91,78,92,78,93,78,94,78,95,78,96,78,97,78,98,78,99,78,100,78,101,78,102,78,103,78,104,78,105,78,106,78,107,78,108,78,109,78,110,78,111,78,112,78,113,78,114,78,115,78,116,78,117,78,118,78,119,78,120,78,121,78,122,78,123,78,124,78,125,78,126,79,33,79,34,79,35,79,36,79,37,79,38,79,39,79,40,79,41,79,42,79,43,79,44,79,45,79,46,79,47,79,48,79,49,79,50,79,51,79,52,79,53,79,54,79,55,79,56,79,57,79,58,79,59,79,60,79,61,79,62,79,63,79,64,79,65,79,66,79,67,79,68,79,69,79,70,79,71,79,72,79,73,79,74,79,75,79,76,79,77,79,78,79,79,79,80,79,81,79,82,79,83,80,33,80,34,80,35,80,36,80,37,80,38,80,39,80,40,80,41,80,42,80,43,80,44,80,45,80,46,80,47,80,48,80,49,80,50,80,51,80,52,80,53,80,54,80,55,80,56,80,57,80,58,80,59,80,60,80,61,80,62,80,63,80,64,80,65,80,66,80,67,80,68,80,69,80,70,80,71,80,72,80,73,80,74,80,75,80,76,80,77,80,78,80,79,80,80,80,81,80,82,80,83,80,84,80,85,80,86,80,87,80,88,80,89,80,90,80,91,80,92,80,93,80,94,80,95,80,96,80,97,80,98,80,99,80,100,80,101,80,102,80,103,80,104,80,105,80,106,80,107,80,108,80,109,80,110,80,111,80,112,80,113,80,114,80,115,80,116,80,117,80,118,80,119,80,120,80,121,80,122,80,123,80,124,80,125,80,126,81,33,81,34,81,35,81,36,81,37,81,38,81,39,81,40,81,41,81,42,81,43,81,44,81,45,81,46,81,47,81,48,81,49,81,50,81,51,81,52,81,53,81,54,81,55,81,56,81,57,81,58,81,59,81,60,81,61,81,62,81,63,81,64,81,65,81,66,81,67,81,68,81,69,81,70,81,71,81,72,81,73,81,74,81,75,81,76,81,77,81,78,81,79,81,80,81,81,81,82,81,83,81,84,81,85,81,86,81,87,81,88,81,89,81,90,81,91,81,92,81,93,81,94,81,95,81,96,81,97,81,98,81,99,81,100,81,101,81,102,81,103,81,104,81,105,81,106,81,107,81,108,81,109,81,110,81,111,81,112,81,113,81,114,81,115,81,116,81,117,81,118,81,119,81,120,81,121,81,122,81,123,81,124,81,125,81,126,82,33,82,34,82,35,82,36,82,37,82,38,82,39,82,40,82,41,82,42,82,43,82,44,82,45,82,46,82,47,82,48,82,49,82,50,82,51,82,52,82,53,82,54,82,55,82,56,82,57,82,58,82,59,82,60,82,61,82,62,82,63,82,64,82,65,82,66,82,67,82,68,82,69,82,70,82,71,82,72,82,73,82,74,82,75,82,76,82,77,82,78,82,79,82,80,82,81,82,82,82,83,82,84,82,85,82,86,82,87,82,88,82,89,82,90,82,91,82,92,82,93,82,94,82,95,82,96,82,97,82,98,82,99,82,100,82,101,82,102,82,103,82,104,82,105,82,106,82,107,82,108,82,109,82,110,82,111,82,112,82,113,82,114,82,115,82,116,82,117,82,118,82,119,82,120,82,121,82,122,82,123,82,124,82,125,82,126,83,33,83,34,83,35,83,36,83,37,83,38,83,39,83,40,83,41,83,42,83,43,83,44,83,45,83,46,83,47,83,48,83,49,83,50,83,51,83,52,83,53,83,54,83,55,83,56,83,57,83,58,83,59,83,60,83,61,83,62,83,63,83,64,83,65,83,66,83,67,83,68,83,69,83,70,83,71,83,72,83,73,83,74,83,75,83,76,83,77,83,78,83,79,83,80,83,81,83,82,83,83,83,84,83,85,83,86,83,87,83,88,83,89,83,90,83,91,83,92,83,93,83,94,83,95,83,96,83,97,83,98,83,99,83,100,83,101,83,102,83,103,83,104,83,105,83,106,83,107,83,108,83,109,83,110,83,111,83,112,83,113,83,114,83,115,83,116,83,117,83,118,83,119,83,120,83,121,83,122,83,123,83,124,83,125,83,126,84,33,84,34,84,35,84,36,84,37,84,38,84,39,84,40,84,41,84,42,84,43,84,44,84,45,84,46,84,47,84,48,84,49,84,50,84,51,84,52,84,53,84,54,84,55,84,56,84,57,84,58,84,59,84,60,84,61,84,62,84,63,84,64,84,65,84,66,84,67,84,68,84,69,84,70,84,71,84,72,84,73,84,74,84,75,84,76,84,77,84,78,84,79,84,80,84,81,84,82,84,83,84,84,84,85,84,86,84,87,84,88,84,89,84,90,84,91,84,92,84,93,84,94,84,95,84,96,84,97,84,98,84,99,84,100,84,101,84,102,84,103,84,104,84,105,84,106,84,107,84,108,84,109,84,110,84,111,84,112,84,113,84,114,84,115,84,116,84,117,84,118,84,119,84,120,84,121,84,122,84,123,84,124,84,125,84,126,85,33,85,34,85,35,85,36,85,37,85,38,85,39,85,40,85,41,85,42,85,43,85,44,85,45,85,46,85,47,85,48,85,49,85,50,85,51,85,52,85,53,85,54,85,55,85,56,85,57,85,58,85,59,85,60,85,61,85,62,85,63,85,64,85,65,85,66,85,67,85,68,85,69,85,70,85,71,85,72,85,73,85,74,85,75,85,76,85,77,85,78,85,79,85,80,85,81,85,82,85,83,85,84,85,85,85,86,85,87,85,88,85,89,85,90,85,91,85,92,85,93,85,94,85,95,85,96,85,97,85,98,85,99,85,100,85,101,85,102,85,103,85,104,85,105,85,106,85,107,85,108,85,109,85,110,85,111,85,112,85,113,85,114,85,115,85,116,85,117,85,118,85,119,85,120,85,121,85,122,85,123,85,124,85,125,85,126,86,33,86,34,86,35,86,36,86,37,86,38,86,39,86,40,86,41,86,42,86,43,86,44,86,45,86,46,86,47,86,48,86,49,86,50,86,51,86,52,86,53,86,54,86,55,86,56,86,57,86,58,86,59,86,60,86,61,86,62,86,63,86,64,86,65,86,66,86,67,86,68,86,69,86,70,86,71,86,72,86,73,86,74,86,75,86,76,86,77,86,78,86,79,86,80,86,81,86,82,86,83,86,84,86,85,86,86,86,87,86,88,86,89,86,90,86,91,86,92,86,93,86,94,86,95,86,96,86,97,86,98,86,99,86,100,86,101,86,102,86,103,86,104,86,105,86,106,86,107,86,108,86,109,86,110,86,111,86,112,86,113,86,114,86,115,86,116,86,117,86,118,86,119,86,120,86,121,86,122,86,123,86,124,86,125,86,126,87,33,87,34,87,35,87,36,87,37,87,38,87,39,87,40,87,41,87,42,87,43,87,44,87,45,87,46,87,47,87,48,87,49,87,50,87,51,87,52,87,53,87,54,87,55,87,56,87,57,87,58,87,59,87,60,87,61,87,62,87,63,87,64,87,65,87,66,87,67,87,68,87,69,87,70,87,71,87,72,87,73,87,74,87,75,87,76,87,77,87,78,87,79,87,80,87,81,87,82,87,83,87,84,87,85,87,86,87,87,87,88,87,89,87,90,87,91,87,92,87,93,87,94,87,95,87,96,87,97,87,98,87,99,87,100,87,101,87,102,87,103,87,104,87,105,87,106,87,107,87,108,87,109,87,110,87,111,87,112,87,113,87,114,87,115,87,116,87,117,87,118,87,119,87,120,87,121,87,122,87,123,87,124,87,125,87,126,88,33,88,34,88,35,88,36,88,37,88,38,88,39,88,40,88,41,88,42,88,43,88,44,88,45,88,46,88,47,88,48,88,49,88,50,88,51,88,52,88,53,88,54,88,55,88,56,88,57,88,58,88,59,88,60,88,61,88,62,88,63,88,64,88,65,88,66,88,67,88,68,88,69,88,70,88,71,88,72,88,73,88,74,88,75,88,76,88,77,88,78,88,79,88,80,88,81,88,82,88,83,88,84,88,85,88,86,88,87,88,88,88,89,88,90,88,91,88,92,88,93,88,94,88,95,88,96,88,97,88,98,88,99,88,100,88,101,88,102,88,103,88,104,88,105,88,106,88,107,88,108,88,109,88,110,88,111,88,112,88,113,88,114,88,115,88,116,88,117,88,118,88,119,88,120,88,121,88,122,88,123,88,124,88,125,88,126,89,33,89,34,89,35,89,36,89,37,89,38,89,39,89,40,89,41,89,42,89,43,89,44,89,45,89,46,89,47,89,48,89,49,89,50,89,51,89,52,89,53,89,54,89,55,89,56,89,57,89,58,89,59,89,60,89,61,89,62,89,63,89,64,89,65,89,66,89,67,89,68,89,69,89,70,89,71,89,72,89,73,89,74,89,75,89,76,89,77,89,78,89,79,89,80,89,81,89,82,89,83,89,84,89,85,89,86,89,87,89,88,89,89,89,90,89,91,89,92,89,93,89,94,89,95,89,96,89,97,89,98,89,99,89,100,89,101,89,102,89,103,89,104,89,105,89,106,89,107,89,108,89,109,89,110,89,111,89,112,89,113,89,114,89,115,89,116,89,117,89,118,89,119,89,120,89,121,89,122,89,123,89,124,89,125,89,126,90,33,90,34,90,35,90,36,90,37,90,38,90,39,90,40,90,41,90,42,90,43,90,44,90,45,90,46,90,47,90,48,90,49,90,50,90,51,90,52,90,53,90,54,90,55,90,56,90,57,90,58,90,59,90,60,90,61,90,62,90,63,90,64,90,65,90,66,90,67,90,68,90,69,90,70,90,71,90,72,90,73,90,74,90,75,90,76,90,77,90,78,90,79,90,80,90,81,90,82,90,83,90,84,90,85,90,86,90,87,90,88,90,89,90,90,90,91,90,92,90,93,90,94,90,95,90,96,90,97,90,98,90,99,90,100,90,101,90,102,90,103,90,104,90,105,90,106,90,107,90,108,90,109,90,110,90,111,90,112,90,113,90,114,90,115,90,116,90,117,90,118,90,119,90,120,90,121,90,122,90,123,90,124,90,125,90,126,91,33,91,34,91,35,91,36,91,37,91,38,91,39,91,40,91,41,91,42,91,43,91,44,91,45,91,46,91,47,91,48,91,49,91,50,91,51,91,52,91,53,91,54,91,55,91,56,91,57,91,58,91,59,91,60,91,61,91,62,91,63,91,64,91,65,91,66,91,67,91,68,91,69,91,70,91,71,91,72,91,73,91,74,91,75,91,76,91,77,91,78,91,79,91,80,91,81,91,82,91,83,91,84,91,85,91,86,91,87,91,88,91,89,91,90,91,91,91,92,91,93,91,94,91,95,91,96,91,97,91,98,91,99,91,100,91,101,91,102,91,103,91,104,91,105,91,106,91,107,91,108,91,109,91,110,91,111,91,112,91,113,91,114,91,115,91,116,91,117,91,118,91,119,91,120,91,121,91,122,91,123,91,124,91,125,91,126,92,33,92,34,92,35,92,36,92,37,92,38,92,39,92,40,92,41,92,42,92,43,92,44,92,45,92,46,92,47,92,48,92,49,92,50,92,51,92,52,92,53,92,54,92,55,92,56,92,57,92,58,92,59,92,60,92,61,92,62,92,63,92,64,92,65,92,66,92,67,92,68,92,69,92,70,92,71,92,72,92,73,92,74,92,75,92,76,92,77,92,78,92,79,92,80,92,81,92,82,92,83,92,84,92,85,92,86,92,87,92,88,92,89,92,90,92,91,92,92,92,93,92,94,92,95,92,96,92,97,92,98,92,99,92,100,92,101,92,102,92,103,92,104,92,105,92,106,92,107,92,108,92,109,92,110,92,111,92,112,92,113,92,114,92,115,92,116,92,117,92,118,92,119,92,120,92,121,92,122,92,123,92,124,92,125,92,126,93,33,93,34,93,35,93,36,93,37,93,38,93,39,93,40,93,41,93,42,93,43,93,44,93,45,93,46,93,47,93,48,93,49,93,50,93,51,93,52,93,53,93,54,93,55,93,56,93,57,93,58,93,59,93,60,93,61,93,62,93,63,93,64,93,65,93,66,93,67,93,68,93,69,93,70,93,71,93,72,93,73,93,74,93,75,93,76,93,77,93,78,93,79,93,80,93,81,93,82,93,83,93,84,93,85,93,86,93,87,93,88,93,89,93,90,93,91,93,92,93,93,93,94,93,95,93,96,93,97,93,98,93,99,93,100,93,101,93,102,93,103,93,104,93,105,93,106,93,107,93,108,93,109,93,110,93,111,93,112,93,113,93,114,93,115,93,116,93,117,93,118,93,119,93,120,93,121,93,122,93,123,93,124,93,125,93,126,94,33,94,34,94,35,94,36,94,37,94,38,94,39,94,40,94,41,94,42,94,43,94,44,94,45,94,46,94,47,94,48,94,49,94,50,94,51,94,52,94,53,94,54,94,55,94,56,94,57,94,58,94,59,94,60,94,61,94,62,94,63,94,64,94,65,94,66,94,67,94,68,94,69,94,70,94,71,94,72,94,73,94,74,94,75,94,76,94,77,94,78,94,79,94,80,94,81,94,82,94,83,94,84,94,85,94,86,94,87,94,88,94,89,94,90,94,91,94,92,94,93,94,94,94,95,94,96,94,97,94,98,94,99,94,100,94,101,94,102,94,103,94,104,94,105,94,106,94,107,94,108,94,109,94,110,94,111,94,112,94,113,94,114,94,115,94,116,94,117,94,118,94,119,94,120,94,121,94,122,94,123,94,124,94,125,94,126,95,33,95,34,95,35,95,36,95,37,95,38,95,39,95,40,95,41,95,42,95,43,95,44,95,45,95,46,95,47,95,48,95,49,95,50,95,51,95,52,95,53,95,54,95,55,95,56,95,57,95,58,95,59,95,60,95,61,95,62,95,63,95,64,95,65,95,66,95,67,95,68,95,69,95,70,95,71,95,72,95,73,95,74,95,75,95,76,95,77,95,78,95,79,95,80,95,81,95,82,95,83,95,84,95,85,95,86,95,87,95,88,95,89,95,90,95,91,95,92,95,93,95,94,95,95,95,96,95,97,95,98,95,99,95,100,95,101,95,102,95,103,95,104,95,105,95,106,95,107,95,108,95,109,95,110,95,111,95,112,95,113,95,114,95,115,95,116,95,117,95,118,95,119,95,120,95,121,95,122,95,123,95,124,95,125,95,126,96,33,96,34,96,35,96,36,96,37,96,38,96,39,96,40,96,41,96,42,96,43,96,44,96,45,96,46,96,47,96,48,96,49,96,50,96,51,96,52,96,53,96,54,96,55,96,56,96,57,96,58,96,59,96,60,96,61,96,62,96,63,96,64,96,65,96,66,96,67,96,68,96,69,96,70,96,71,96,72,96,73,96,74,96,75,96,76,96,77,96,78,96,79,96,80,96,81,96,82,96,83,96,84,96,85,96,86,96,87,96,88,96,89,96,90,96,91,96,92,96,93,96,94,96,95,96,96,96,97,96,98,96,99,96,100,96,101,96,102,96,103,96,104,96,105,96,106,96,107,96,108,96,109,96,110,96,111,96,112,96,113,96,114,96,115,96,116,96,117,96,118,96,119,96,120,96,121,96,122,96,123,96,124,96,125,96,126,97,33,97,34,97,35,97,36,97,37,97,38,97,39,97,40,97,41,97,42,97,43,97,44,97,45,97,46,97,47,97,48,97,49,97,50,97,51,97,52,97,53,97,54,97,55,97,56,97,57,97,58,97,59,97,60,97,61,97,62,97,63,97,64,97,65,97,66,97,67,97,68,97,69,97,70,97,71,97,72,97,73,97,74,97,75,97,76,97,77,97,78,97,79,97,80,97,81,97,82,97,83,97,84,97,85,97,86,97,87,97,88,97,89,97,90,97,91,97,92,97,93,97,94,97,95,97,96,97,97,97,98,97,99,97,100,97,101,97,102,97,103,97,104,97,105,97,106,97,107,97,108,97,109,97,110,97,111,97,112,97,113,97,114,97,115,97,116,97,117,97,118,97,119,97,120,97,121,97,122,97,123,97,124,97,125,97,126,98,33,98,34,98,35,98,36,98,37,98,38,98,39,98,40,98,41,98,42,98,43,98,44,98,45,98,46,98,47,98,48,98,49,98,50,98,51,98,52,98,53,98,54,98,55,98,56,98,57,98,58,98,59,98,60,98,61,98,62,98,63,98,64,98,65,98,66,98,67,98,68,98,69,98,70,98,71,98,72,98,73,98,74,98,75,98,76,98,77,98,78,98,79,98,80,98,81,98,82,98,83,98,84,98,85,98,86,98,87,98,88,98,89,98,90,98,91,98,92,98,93,98,94,98,95,98,96,98,97,98,98,98,99,98,100,98,101,98,102,98,103,98,104,98,105,98,106,98,107,98,108,98,109,98,110,98,111,98,112,98,113,98,114,98,115,98,116,98,117,98,118,98,119,98,120,98,121,98,122,98,123,98,124,98,125,98,126,99,33,99,34,99,35,99,36,99,37,99,38,99,39,99,40,99,41,99,42,99,43,99,44,99,45,99,46,99,47,99,48,99,49,99,50,99,51,99,52,99,53,99,54,99,55,99,56,99,57,99,58,99,59,99,60,99,61,99,62,99,63,99,64,99,65,99,66,99,67,99,68,99,69,99,70,99,71,99,72,99,73,99,74,99,75,99,76,99,77,99,78,99,79,99,80,99,81,99,82,99,83,99,84,99,85,99,86,99,87,99,88,99,89,99,90,99,91,99,92,99,93,99,94,99,95,99,96,99,97,99,98,99,99,99,100,99,101,99,102,99,103,99,104,99,105,99,106,99,107,99,108,99,109,99,110,99,111,99,112,99,113,99,114,99,115,99,116,99,117,99,118,99,119,99,120,99,121,99,122,99,123,99,124,99,125,99,126,100,33,100,34,100,35,100,36,100,37,100,38,100,39,100,40,100,41,100,42,100,43,100,44,100,45,100,46,100,47,100,48,100,49,100,50,100,51,100,52,100,53,100,54,100,55,100,56,100,57,100,58,100,59,100,60,100,61,100,62,100,63,100,64,100,65,100,66,100,67,100,68,100,69,100,70,100,71,100,72,100,73,100,74,100,75,100,76,100,77,100,78,100,79,100,80,100,81,100,82,100,83,100,84,100,85,100,86,100,87,100,88,100,89,100,90,100,91,100,92,100,93,100,94,100,95,100,96,100,97,100,98,100,99,100,100,100,101,100,102,100,103,100,104,100,105,100,106,100,107,100,108,100,109,100,110,100,111,100,112,100,113,100,114,100,115,100,116,100,117,100,118,100,119,100,120,100,121,100,122,100,123,100,124,100,125,100,126,101,33,101,34,101,35,101,36,101,37,101,38,101,39,101,40,101,41,101,42,101,43,101,44,101,45,101,46,101,47,101,48,101,49,101,50,101,51,101,52,101,53,101,54,101,55,101,56,101,57,101,58,101,59,101,60,101,61,101,62,101,63,101,64,101,65,101,66,101,67,101,68,101,69,101,70,101,71,101,72,101,73,101,74,101,75,101,76,101,77,101,78,101,79,101,80,101,81,101,82,101,83,101,84,101,85,101,86,101,87,101,88,101,89,101,90,101,91,101,92,101,93,101,94,101,95,101,96,101,97,101,98,101,99,101,100,101,101,101,102,101,103,101,104,101,105,101,106,101,107,101,108,101,109,101,110,101,111,101,112,101,113,101,114,101,115,101,116,101,117,101,118,101,119,101,120,101,121,101,122,101,123,101,124,101,125,101,126,102,33,102,34,102,35,102,36,102,37,102,38,102,39,102,40,102,41,102,42,102,43,102,44,102,45,102,46,102,47,102,48,102,49,102,50,102,51,102,52,102,53,102,54,102,55,102,56,102,57,102,58,102,59,102,60,102,61,102,62,102,63,102,64,102,65,102,66,102,67,102,68,102,69,102,70,102,71,102,72,102,73,102,74,102,75,102,76,102,77,102,78,102,79,102,80,102,81,102,82,102,83,102,84,102,85,102,86,102,87,102,88,102,89,102,90,102,91,102,92,102,93,102,94,102,95,102,96,102,97,102,98,102,99,102,100,102,101,102,102,102,103,102,104,102,105,102,106,102,107,102,108,102,109,102,110,102,111,102,112,102,113,102,114,102,115,102,116,102,117,102,118,102,119,102,120,102,121,102,122,102,123,102,124,102,125,102,126,103,33,103,34,103,35,103,36,103,37,103,38,103,39,103,40,103,41,103,42,103,43,103,44,103,45,103,46,103,47,103,48,103,49,103,50,103,51,103,52,103,53,103,54,103,55,103,56,103,57,103,58,103,59,103,60,103,61,103,62,103,63,103,64,103,65,103,66,103,67,103,68,103,69,103,70,103,71,103,72,103,73,103,74,103,75,103,76,103,77,103,78,103,79,103,80,103,81,103,82,103,83,103,84,103,85,103,86,103,87,103,88,103,89,103,90,103,91,103,92,103,93,103,94,103,95,103,96,103,97,103,98,103,99,103,100,103,101,103,102,103,103,103,104,103,105,103,106,103,107,103,108,103,109,103,110,103,111,103,112,103,113,103,114,103,115,103,116,103,117,103,118,103,119,103,120,103,121,103,122,103,123,103,124,103,125,103,126,104,33,104,34,104,35,104,36,104,37,104,38,104,39,104,40,104,41,104,42,104,43,104,44,104,45,104,46,104,47,104,48,104,49,104,50,104,51,104,52,104,53,104,54,104,55,104,56,104,57,104,58,104,59,104,60,104,61,104,62,104,63,104,64,104,65,104,66,104,67,104,68,104,69,104,70,104,71,104,72,104,73,104,74,104,75,104,76,104,77,104,78,104,79,104,80,104,81,104,82,104,83,104,84,104,85,104,86,104,87,104,88,104,89,104,90,104,91,104,92,104,93,104,94,104,95,104,96,104,97,104,98,104,99,104,100,104,101,104,102,104,103,104,104,104,105,104,106,104,107,104,108,104,109,104,110,104,111,104,112,104,113,104,114,104,115,104,116,104,117,104,118,104,119,104,120,104,121,104,122,104,123,104,124,104,125,104,126,105,33,105,34,105,35,105,36,105,37,105,38,105,39,105,40,105,41,105,42,105,43,105,44,105,45,105,46,105,47,105,48,105,49,105,50,105,51,105,52,105,53,105,54,105,55,105,56,105,57,105,58,105,59,105,60,105,61,105,62,105,63,105,64,105,65,105,66,105,67,105,68,105,69,105,70,105,71,105,72,105,73,105,74,105,75,105,76,105,77,105,78,105,79,105,80,105,81,105,82,105,83,105,84,105,85,105,86,105,87,105,88,105,89,105,90,105,91,105,92,105,93,105,94,105,95,105,96,105,97,105,98,105,99,105,100,105,101,105,102,105,103,105,104,105,105,105,106,105,107,105,108,105,109,105,110,105,111,105,112,105,113,105,114,105,115,105,116,105,117,105,118,105,119,105,120,105,121,105,122,105,123,105,124,105,125,105,126,106,33,106,34,106,35,106,36,106,37,106,38,106,39,106,40,106,41,106,42,106,43,106,44,106,45,106,46,106,47,106,48,106,49,106,50,106,51,106,52,106,53,106,54,106,55,106,56,106,57,106,58,106,59,106,60,106,61,106,62,106,63,106,64,106,65,106,66,106,67,106,68,106,69,106,70,106,71,106,72,106,73,106,74,106,75,106,76,106,77,106,78,106,79,106,80,106,81,106,82,106,83,106,84,106,85,106,86,106,87,106,88,106,89,106,90,106,91,106,92,106,93,106,94,106,95,106,96,106,97,106,98,106,99,106,100,106,101,106,102,106,103,106,104,106,105,106,106,106,107,106,108,106,109,106,110,106,111,106,112,106,113,106,114,106,115,106,116,106,117,106,118,106,119,106,120,106,121,106,122,106,123,106,124,106,125,106,126,107,33,107,34,107,35,107,36,107,37,107,38,107,39,107,40,107,41,107,42,107,43,107,44,107,45,107,46,107,47,107,48,107,49,107,50,107,51,107,52,107,53,107,54,107,55,107,56,107,57,107,58,107,59,107,60,107,61,107,62,107,63,107,64,107,65,107,66,107,67,107,68,107,69,107,70,107,71,107,72,107,73,107,74,107,75,107,76,107,77,107,78,107,79,107,80,107,81,107,82,107,83,107,84,107,85,107,86,107,87,107,88,107,89,107,90,107,91,107,92,107,93,107,94,107,95,107,96,107,97,107,98,107,99,107,100,107,101,107,102,107,103,107,104,107,105,107,106,107,107,107,108,107,109,107,110,107,111,107,112,107,113,107,114,107,115,107,116,107,117,107,118,107,119,107,120,107,121,107,122,107,123,107,124,107,125,107,126,108,33,108,34,108,35,108,36,108,37,108,38,108,39,108,40,108,41,108,42,108,43,108,44,108,45,108,46,108,47,108,48,108,49,108,50,108,51,108,52,108,53,108,54,108,55,108,56,108,57,108,58,108,59,108,60,108,61,108,62,108,63,108,64,108,65,108,66,108,67,108,68,108,69,108,70,108,71,108,72,108,73,108,74,108,75,108,76,108,77,108,78,108,79,108,80,108,81,108,82,108,83,108,84,108,85,108,86,108,87,108,88,108,89,108,90,108,91,108,92,108,93,108,94,108,95,108,96,108,97,108,98,108,99,108,100,108,101,108,102,108,103,108,104,108,105,108,106,108,107,108,108,108,109,108,110,108,111,108,112,108,113,108,114,108,115,108,116,108,117,108,118,108,119,108,120,108,121,108,122,108,123,108,124,108,125,108,126,109,33,109,34,109,35,109,36,109,37,109,38,109,39,109,40,109,41,109,42,109,43,109,44,109,45,109,46,109,47,109,48,109,49,109,50,109,51,109,52,109,53,109,54,109,55,109,56,109,57,109,58,109,59,109,60,109,61,109,62,109,63,109,64,109,65,109,66,109,67,109,68,109,69,109,70,109,71,109,72,109,73,109,74,109,75,109,76,109,77,109,78,109,79,109,80,109,81,109,82,109,83,109,84,109,85,109,86,109,87,109,88,109,89,109,90,109,91,109,92,109,93,109,94,109,95,109,96,109,97,109,98,109,99,109,100,109,101,109,102,109,103,109,104,109,105,109,106,109,107,109,108,109,109,109,110,109,111,109,112,109,113,109,114,109,115,109,116,109,117,109,118,109,119,109,120,109,121,109,122,109,123,109,124,109,125,109,126,110,33,110,34,110,35,110,36,110,37,110,38,110,39,110,40,110,41,110,42,110,43,110,44,110,45,110,46,110,47,110,48,110,49,110,50,110,51,110,52,110,53,110,54,110,55,110,56,110,57,110,58,110,59,110,60,110,61,110,62,110,63,110,64,110,65,110,66,110,67,110,68,110,69,110,70,110,71,110,72,110,73,110,74,110,75,110,76,110,77,110,78,110,79,110,80,110,81,110,82,110,83,110,84,110,85,110,86,110,87,110,88,110,89,110,90,110,91,110,92,110,93,110,94,110,95,110,96,110,97,110,98,110,99,110,100,110,101,110,102,110,103,110,104,110,105,110,106,110,107,110,108,110,109,110,110,110,111,110,112,110,113,110,114,110,115,110,116,110,117,110,118,110,119,110,120,110,121,110,122,110,123,110,124,110,125,110,126,111,33,111,34,111,35,111,36,111,37,111,38,111,39,111,40,111,41,111,42,111,43,111,44,111,45,111,46,111,47,111,48,111,49,111,50,111,51,111,52,111,53,111,54,111,55,111,56,111,57,111,58,111,59,111,60,111,61,111,62,111,63,111,64,111,65,111,66,111,67,111,68,111,69,111,70,111,71,111,72,111,73,111,74,111,75,111,76,111,77,111,78,111,79,111,80,111,81,111,82,111,83,111,84,111,85,111,86,111,87,111,88,111,89,111,90,111,91,111,92,111,93,111,94,111,95,111,96,111,97,111,98,111,99,111,100,111,101,111,102,111,103,111,104,111,105,111,106,111,107,111,108,111,109,111,110,111,111,111,112,111,113,111,114,111,115,111,116,111,117,111,118,111,119,111,120,111,121,111,122,111,123,111,124,111,125,111,126,112,33,112,34,112,35,112,36,112,37,112,38,112,39,112,40,112,41,112,42,112,43,112,44,112,45,112,46,112,47,112,48,112,49,112,50,112,51,112,52,112,53,112,54,112,55,112,56,112,57,112,58,112,59,112,60,112,61,112,62,112,63,112,64,112,65,112,66,112,67,112,68,112,69,112,70,112,71,112,72,112,73,112,74,112,75,112,76,112,77,112,78,112,79,112,80,112,81,112,82,112,83,112,84,112,85,112,86,112,87,112,88,112,89,112,90,112,91,112,92,112,93,112,94,112,95,112,96,112,97,112,98,112,99,112,100,112,101,112,102,112,103,112,104,112,105,112,106,112,107,112,108,112,109,112,110,112,111,112,112,112,113,112,114,112,115,112,116,112,117,112,118,112,119,112,120,112,121,112,122,112,123,112,124,112,125,112,126,113,33,113,34,113,35,113,36,113,37,113,38,113,39,113,40,113,41,113,42,113,43,113,44,113,45,113,46,113,47,113,48,113,49,113,50,113,51,113,52,113,53,113,54,113,55,113,56,113,57,113,58,113,59,113,60,113,61,113,62,113,63,113,64,113,65,113,66,113,67,113,68,113,69,113,70,113,71,113,72,113,73,113,74,113,75,113,76,113,77,113,78,113,79,113,80,113,81,113,82,113,83,113,84,113,85,113,86,113,87,113,88,113,89,113,90,113,91,113,92,113,93,113,94,113,95,113,96,113,97,113,98,113,99,113,100,113,101,113,102,113,103,113,104,113,105,113,106,113,107,113,108,113,109,113,110,113,111,113,112,113,113,113,114,113,115,113,116,113,117,113,118,113,119,113,120,113,121,113,122,113,123,113,124,113,125,113,126,114,33,114,34,114,35,114,36,114,37,114,38,114,39,114,40,114,41,114,42,114,43,114,44,114,45,114,46,114,47,114,48,114,49,114,50,114,51,114,52,114,53,114,54,114,55,114,56,114,57,114,58,114,59,114,60,114,61,114,62,114,63,114,64,114,65,114,66,114,67,114,68,114,69,114,70,114,71,114,72,114,73,114,74,114,75,114,76,114,77,114,78,114,79,114,80,114,81,114,82,114,83,114,84,114,85,114,86,114,87,114,88,114,89,114,90,114,91,114,92,114,93,114,94,114,95,114,96,114,97,114,98,114,99,114,100,114,101,114,102,114,103,114,104,114,105,114,106,114,107,114,108,114,109,114,110,114,111,114,112,114,113,114,114,114,115,114,116,114,117,114,118,114,119,114,120,114,121,114,122,114,123,114,124,114,125,114,126,115,33,115,34,115,35,115,36,115,37,115,38,115,39,115,40,115,41,115,42,115,43,115,44,115,45,115,46,115,47,115,48,115,49,115,50,115,51,115,52,115,53,115,54,115,55,115,56,115,57,115,58,115,59,115,60,115,61,115,62,115,63,115,64,115,65,115,66,115,67,115,68,115,69,115,70,115,71,115,72,115,73,115,74,115,75,115,76,115,77,115,78,115,79,115,80,115,81,115,82,115,83,115,84,115,85,115,86,115,87,115,88,115,89,115,90,115,91,115,92,115,93,115,94,115,95,115,96,115,97,115,98,115,99,115,100,115,101,115,102,115,103,115,104,115,105,115,106,115,107,115,108,115,109,115,110,115,111,115,112,115,113,115,114,115,115,115,116,115,117,115,118,115,119,115,120,115,121,115,122,115,123,115,124,115,125,115,126,116,33,116,34,116,35,116,36,116,37,116,38,34,104]; 7 | var string = "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011\uFF0B\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\u21D2\u21D4\u2200\u2203\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\u25EF\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4\u30F5\u30F6\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2252\u2261\u222B\u221A\u22A5\u2220\u2235\u2229\u222A\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\u2235"; 8 | assert_equals(new TextDecoder("iso-2022-jp").decode(new Uint8Array(bytes)), string, "decoded"); 9 | }, 10 | "iso-2022-jp" 11 | ); 12 | -------------------------------------------------------------------------------- /test/test-misc.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | var THE_ENCODING = ['utf-8']; 5 | 6 | var LEGACY_ENCODINGS = [ 7 | 'ibm866', 'iso-8859-2', 'iso-8859-3', 'iso-8859-4', 'iso-8859-5', 8 | 'iso-8859-6', 'iso-8859-7', 'iso-8859-8', 'iso-8859-10', 9 | 'iso-8859-13', 'iso-8859-14', 'iso-8859-15', 'iso-8859-16', 'koi8-r', 10 | 'koi8-u', 'macintosh', 'windows-874', 'windows-1250', 'windows-1251', 11 | 'windows-1252', 'windows-1253', 'windows-1254', 'windows-1255', 12 | 'windows-1256', 'windows-1257', 'windows-1258', 'x-mac-cyrillic', 13 | 'gbk', 'gb18030', 'big5', 'euc-jp', 'iso-2022-jp', 'shift_jis', 14 | 'euc-kr', 'utf-16le', 'utf-16be' 15 | ]; 16 | 17 | var ASCII_SUPERSETS = THE_ENCODING.concat(LEGACY_ENCODINGS) 18 | .filter(function(e) { 19 | return e !== 'utf-16le' && e !== 'utf-16be'; 20 | }); 21 | 22 | // Miscellaneous tests 23 | 24 | test(function() { 25 | assert_false(/\[native code\]/.test(String(TextDecoder)), 26 | 'Native implementation present - polyfill not tested.'); 27 | }, 'TextDecoder Polyfill (will fail if natively supported)'); 28 | 29 | test(function() { 30 | assert_false(/\[native code\]/.test(String(TextEncoder)), 31 | 'Native implementation present - polyfill not tested.'); 32 | }, 'TextEncoder Polyfill (will fail if natively supported)'); 33 | 34 | test(function() { 35 | assert_true('encoding' in new TextEncoder()); 36 | assert_equals(new TextEncoder().encoding, 'utf-8'); 37 | 38 | assert_true('encoding' in new TextDecoder()); 39 | assert_equals(new TextDecoder().encoding, 'utf-8'); 40 | assert_equals(new TextDecoder('utf-16le').encoding, 'utf-16le'); 41 | assert_true('fatal' in new TextDecoder()); 42 | assert_false(new TextDecoder('utf-8').fatal); 43 | assert_true(new TextDecoder('utf-8', {fatal: true}).fatal); 44 | assert_true('ignoreBOM' in new TextDecoder()); 45 | assert_false(new TextDecoder('utf-8').ignoreBOM); 46 | assert_true(new TextDecoder('utf-8', {ignoreBOM: true}).ignoreBOM); 47 | }, 'Attributes'); 48 | 49 | test(function() { 50 | var badStrings = [ 51 | { input: '\ud800', expected: '\ufffd' }, // Surrogate half 52 | { input: '\udc00', expected: '\ufffd' }, // Surrogate half 53 | { input: 'abc\ud800def', expected: 'abc\ufffddef' }, // Surrogate half 54 | { input: 'abc\udc00def', expected: 'abc\ufffddef' }, // Surrogate half 55 | { input: '\udc00\ud800', expected: '\ufffd\ufffd' } // Wrong order 56 | ]; 57 | 58 | badStrings.forEach( 59 | function(t) { 60 | var encoded = new TextEncoder().encode(t.input); 61 | var decoded = new TextDecoder().decode(encoded); 62 | assert_equals(t.expected, decoded); 63 | }); 64 | }, 'bad data'); 65 | 66 | test(function() { 67 | var bad = [ 68 | { encoding: 'utf-8', input: [0xC0] }, // ends early 69 | { encoding: 'utf-8', input: [0xC0, 0x00] }, // invalid trail 70 | { encoding: 'utf-8', input: [0xC0, 0xC0] }, // invalid trail 71 | { encoding: 'utf-8', input: [0xE0] }, // ends early 72 | { encoding: 'utf-8', input: [0xE0, 0x00] }, // invalid trail 73 | { encoding: 'utf-8', input: [0xE0, 0xC0] }, // invalid trail 74 | { encoding: 'utf-8', input: [0xE0, 0x80, 0x00] }, // invalid trail 75 | { encoding: 'utf-8', input: [0xE0, 0x80, 0xC0] }, // invalid trail 76 | { encoding: 'utf-8', input: [0xFC, 0x80, 0x80, 0x80, 0x80, 0x80] }, // > 0x10FFFF 77 | { encoding: 'utf-16le', input: [0x00] }, // truncated code unit 78 | { encoding: 'utf-16le', input: [0x00, 0xd8] }, // surrogate half 79 | { encoding: 'utf-16le', input: [0x00, 0xd8, 0x00, 0x00] }, // surrogate half 80 | { encoding: 'utf-16le', input: [0x00, 0xdc, 0x00, 0x00] }, // trail surrogate 81 | { encoding: 'utf-16le', input: [0x00, 0xdc, 0x00, 0xd8] } // swapped surrogates 82 | // TODO: Single byte encoding cases 83 | ]; 84 | 85 | bad.forEach( 86 | function(t) { 87 | assert_throws({name: 'TypeError'}, function() { 88 | new TextDecoder(t.encoding, {fatal: true}).decode(new Uint8Array(t.input)); 89 | }); 90 | }); 91 | }, 'fatal flag'); 92 | 93 | test(function() { 94 | var encodings = [ 95 | { label: 'utf-8', encoding: 'utf-8' }, 96 | { label: 'utf-16', encoding: 'utf-16le' }, 97 | { label: 'utf-16le', encoding: 'utf-16le' }, 98 | { label: 'utf-16be', encoding: 'utf-16be' }, 99 | { label: 'ascii', encoding: 'windows-1252' }, 100 | { label: 'iso-8859-1', encoding: 'windows-1252' } 101 | ]; 102 | 103 | encodings.forEach( 104 | function(test) { 105 | assert_equals(new TextDecoder(test.label.toLowerCase()).encoding, test.encoding); 106 | assert_equals(new TextDecoder(test.label.toUpperCase()).encoding, test.encoding); 107 | }); 108 | }, 'Encoding names are case insensitive'); 109 | 110 | test(function() { 111 | var utf8_bom = [0xEF, 0xBB, 0xBF]; 112 | var utf8 = [0x7A, 0xC2, 0xA2, 0xE6, 0xB0, 0xB4, 0xF0, 0x9D, 0x84, 0x9E, 0xF4, 0x8F, 0xBF, 0xBD]; 113 | 114 | var utf16le_bom = [0xff, 0xfe]; 115 | var utf16le = [0x7A, 0x00, 0xA2, 0x00, 0x34, 0x6C, 0x34, 0xD8, 0x1E, 0xDD, 0xFF, 0xDB, 0xFD, 0xDF]; 116 | 117 | var utf16be_bom = [0xfe, 0xff]; 118 | var utf16be = [0x00, 0x7A, 0x00, 0xA2, 0x6C, 0x34, 0xD8, 0x34, 0xDD, 0x1E, 0xDB, 0xFF, 0xDF, 0xFD]; 119 | 120 | var string = 'z\xA2\u6C34\uD834\uDD1E\uDBFF\uDFFD'; // z, cent, CJK water, G-Clef, Private-use character 121 | 122 | // missing BOMs 123 | assert_equals(new TextDecoder('utf-8').decode(new Uint8Array(utf8)), string); 124 | assert_equals(new TextDecoder('utf-16le').decode(new Uint8Array(utf16le)), string); 125 | assert_equals(new TextDecoder('utf-16be').decode(new Uint8Array(utf16be)), string); 126 | 127 | // matching BOMs 128 | assert_equals(new TextDecoder('utf-8').decode(new Uint8Array(utf8_bom.concat(utf8))), string); 129 | assert_equals(new TextDecoder('utf-16le').decode(new Uint8Array(utf16le_bom.concat(utf16le))), string); 130 | assert_equals(new TextDecoder('utf-16be').decode(new Uint8Array(utf16be_bom.concat(utf16be))), string); 131 | 132 | // matching BOMs split 133 | var decoder8 = new TextDecoder('utf-8'); 134 | assert_equals(decoder8.decode(new Uint8Array(utf8_bom.slice(0, 1)), {stream: true}), ''); 135 | assert_equals(decoder8.decode(new Uint8Array(utf8_bom.slice(1).concat(utf8))), string); 136 | assert_equals(decoder8.decode(new Uint8Array(utf8_bom.slice(0, 2)), {stream: true}), ''); 137 | assert_equals(decoder8.decode(new Uint8Array(utf8_bom.slice(2).concat(utf8))), string); 138 | var decoder16le = new TextDecoder('utf-16le'); 139 | assert_equals(decoder16le.decode(new Uint8Array(utf16le_bom.slice(0, 1)), {stream: true}), ''); 140 | assert_equals(decoder16le.decode(new Uint8Array(utf16le_bom.slice(1).concat(utf16le))), string); 141 | var decoder16be = new TextDecoder('utf-16be'); 142 | assert_equals(decoder16be.decode(new Uint8Array(utf16be_bom.slice(0, 1)), {stream: true}), ''); 143 | assert_equals(decoder16be.decode(new Uint8Array(utf16be_bom.slice(1).concat(utf16be))), string); 144 | 145 | // mismatching BOMs 146 | assert_not_equals(new TextDecoder('utf-8').decode(new Uint8Array(utf16le_bom.concat(utf8))), string); 147 | assert_not_equals(new TextDecoder('utf-8').decode(new Uint8Array(utf16be_bom.concat(utf8))), string); 148 | assert_not_equals(new TextDecoder('utf-16le').decode(new Uint8Array(utf8_bom.concat(utf16le))), string); 149 | assert_not_equals(new TextDecoder('utf-16le').decode(new Uint8Array(utf16be_bom.concat(utf16le))), string); 150 | assert_not_equals(new TextDecoder('utf-16be').decode(new Uint8Array(utf8_bom.concat(utf16be))), string); 151 | assert_not_equals(new TextDecoder('utf-16be').decode(new Uint8Array(utf16le_bom.concat(utf16be))), string); 152 | 153 | // ignore BOMs 154 | assert_equals(new TextDecoder('utf-8', {ignoreBOM: true}) 155 | .decode(new Uint8Array(utf8_bom.concat(utf8))), 156 | '\uFEFF' + string); 157 | assert_equals(new TextDecoder('utf-16le', {ignoreBOM: true}) 158 | .decode(new Uint8Array(utf16le_bom.concat(utf16le))), 159 | '\uFEFF' + string); 160 | assert_equals(new TextDecoder('utf-16be', {ignoreBOM: true}) 161 | .decode(new Uint8Array(utf16be_bom.concat(utf16be))), 162 | '\uFEFF' + string); 163 | }, 'Byte-order marks'); 164 | 165 | test(function() { 166 | assert_equals(new TextDecoder('utf-8').encoding, 'utf-8'); // canonical case 167 | assert_equals(new TextDecoder('UTF-16').encoding, 'utf-16le'); // canonical case and name 168 | assert_equals(new TextDecoder('UTF-16BE').encoding, 'utf-16be'); // canonical case and name 169 | assert_equals(new TextDecoder('iso8859-1').encoding, 'windows-1252'); // canonical case and name 170 | assert_equals(new TextDecoder('iso-8859-1').encoding, 'windows-1252'); // canonical case and name 171 | }, 'Encoding names'); 172 | 173 | test(function() { 174 | var string = '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF'; 175 | var cases = [ 176 | { 177 | encoding: 'utf-8', 178 | encoded: [0, 49, 50, 51, 65, 66, 67, 97, 98, 99, 194, 128, 195, 191, 196, 179 | 128, 225, 128, 128, 239, 191, 189, 240, 144, 128, 128, 244, 143, 180 | 191, 191] 181 | }, 182 | { 183 | encoding: 'utf-16le', 184 | encoded: [0, 0, 49, 0, 50, 0, 51, 0, 65, 0, 66, 0, 67, 0, 97, 0, 98, 0, 185 | 99, 0, 128, 0, 255, 0, 0, 1, 0, 16, 253, 255, 0, 216, 0, 220, 186 | 255, 219, 255, 223] 187 | }, 188 | { 189 | encoding: 'utf-16be', 190 | encoded: [0, 0, 0, 49, 0, 50, 0, 51, 0, 65, 0, 66, 0, 67, 0, 97, 0, 98, 0, 191 | 99, 0, 128, 0, 255, 1, 0, 16, 0, 255, 253, 216, 0, 220, 0, 219, 192 | 255, 223, 255] 193 | } 194 | ]; 195 | 196 | cases.forEach(function(c) { 197 | for (var len = 1; len <= 5; ++len) { 198 | var out = '', decoder = new TextDecoder(c.encoding); 199 | for (var i = 0; i < c.encoded.length; i += len) { 200 | var sub = []; 201 | for (var j = i; j < c.encoded.length && j < i + len; ++j) { 202 | sub.push(c.encoded[j]); 203 | } 204 | out += decoder.decode(new Uint8Array(sub), {stream: true}); 205 | } 206 | out += decoder.decode(); 207 | assert_equals(out, string, 'streaming decode ' + c.encoding); 208 | } 209 | }); 210 | }, 'Streaming Decode'); 211 | 212 | test(function() { 213 | var jis = [0x82, 0xC9, 0x82, 0xD9, 0x82, 0xF1]; 214 | var expected = '\u306B\u307B\u3093'; // Nihon 215 | assert_equals(new TextDecoder('shift_jis').decode(new Uint8Array(jis)), expected); 216 | }, 'Shift_JIS Decode'); 217 | 218 | test(function() { 219 | ASCII_SUPERSETS.forEach(function(encoding) { 220 | var string = '', bytes = []; 221 | for (var i = 0; i < 128; ++i) { 222 | 223 | // Encodings that have escape codes in 0x00-0x7F 224 | if (encoding === 'iso-2022-jp' && 225 | (i === 0x0E || i === 0x0F || i === 0x1B)) 226 | continue; 227 | 228 | string += String.fromCharCode(i); 229 | bytes.push(i); 230 | } 231 | var ascii_encoded = new TextEncoder().encode(string); 232 | assert_equals(new TextDecoder(encoding).decode(ascii_encoded), string, encoding); 233 | }); 234 | }, 'Supersets of ASCII decode ASCII correctly'); 235 | 236 | test(function() { 237 | assert_throws({name: 'TypeError'}, function() { new TextDecoder('utf-8', {fatal: true}).decode(new Uint8Array([0xff])); }); 238 | // This should not hang: 239 | new TextDecoder('utf-8').decode(new Uint8Array([0xff])); 240 | 241 | assert_throws({name: 'TypeError'}, function() { new TextDecoder('utf-16le', {fatal: true}).decode(new Uint8Array([0x00])); }); 242 | // This should not hang: 243 | new TextDecoder('utf-16le').decode(new Uint8Array([0x00])); 244 | 245 | assert_throws({name: 'TypeError'}, function() { new TextDecoder('utf-16be', {fatal: true}).decode(new Uint8Array([0x00])); }); 246 | // This should not hang: 247 | new TextDecoder('utf-16be').decode(new Uint8Array([0x00])); 248 | }, 'Non-fatal errors at EOF'); 249 | 250 | test(function() { 251 | LEGACY_ENCODINGS.forEach(function(encoding) { 252 | assert_equals(new TextDecoder(encoding).encoding, encoding); 253 | assert_equals(new TextEncoder(encoding).encoding, 'utf-8'); 254 | }); 255 | }, 'Legacy encodings supported only for decode, not encode'); 256 | 257 | test(function() { 258 | [ 259 | 'csiso2022kr', 260 | 'hz-gb-2312', 261 | 'iso-2022-cn', 262 | 'iso-2022-cn-ext', 263 | 'iso-2022-kr' 264 | ].forEach(function(encoding) { 265 | 266 | assert_equals(new TextEncoder(encoding).encoding, 'utf-8'); 267 | 268 | assert_throws({name: 'RangeError'}, 269 | function() { 270 | var decoder = new TextDecoder(encoding, {fatal: true}); 271 | }); 272 | 273 | assert_throws({name: 'RangeError'}, 274 | function() { 275 | var decoder = new TextDecoder(encoding, {fatal: false}); 276 | }); 277 | }); 278 | }, 'Replacement encoding labels'); 279 | 280 | test(function() { 281 | var decoder = new TextDecoder(); 282 | var bytes = [65, 66, 97, 98, 99, 100, 101, 102, 103, 104, 67, 68, 69, 70, 71, 72]; 283 | var chars = 'ABabcdefghCDEFGH'; 284 | var buffer = new Uint8Array(bytes).buffer; 285 | assert_equals(decoder.decode(buffer), chars, 286 | 'Decoding from ArrayBuffer should match expected text.'); 287 | 288 | ['Uint8Array', 'Int8Array', 'Uint8ClampedArray', 289 | 'Uint16Array', 'Int16Array', 290 | 'Uint32Array', 'Int32Array', 291 | 'Float32Array', 'Float64Array'].forEach(function(typeName) { 292 | var type = self[typeName]; 293 | 294 | var array = new type(buffer); 295 | assert_equals(decoder.decode(array), chars, 296 | 'Decoding from ' + typeName + ' should match expected text.'); 297 | 298 | var subset = new type(buffer, type.BYTES_PER_ELEMENT, 8 / type.BYTES_PER_ELEMENT); 299 | assert_equals(decoder.decode(subset), 300 | chars.substring(type.BYTES_PER_ELEMENT, type.BYTES_PER_ELEMENT + 8), 301 | 'Decoding from ' + typeName + ' should match expected text.'); 302 | }); 303 | }, 'ArrayBuffer, ArrayBufferView and buffer offsets'); 304 | 305 | test(function() { 306 | assert_throws({name: 'RangeError'}, 307 | function() { new TextDecoder(null); }, 308 | 'Null should coerce to "null" and be invalid encoding name.'); 309 | 310 | assert_throws({name: 'TypeError'}, 311 | function() { new TextDecoder('utf-8', ''); }, 312 | 'String should not coerce to dictionary.'); 313 | 314 | assert_throws({name: 'TypeError'}, 315 | function() { new TextDecoder('utf-8').decode(null, ''); }, 316 | 'String should not coerce to dictionary.'); 317 | }, 'Invalid parameters'); 318 | 319 | test(function() { 320 | assert_array_equals( 321 | [249,249,249,233,249,235,249,234,164,81,164,202], 322 | new TextEncoder('big5', {NONSTANDARD_allowLegacyEncoding: true}) 323 | .encode('\u2550\u255E\u2561\u256A\u5341\u5345')); 324 | }, 'NONSTANDARD - regression tests'); 325 | 326 | test(function() { 327 | // Regression test for https://github.com/whatwg/encoding/issues/22 328 | assert_equals( 329 | new TextDecoder('gb18030').decode(new Uint8Array([ 330 | 0xA8, 0xBC, 331 | 0x81, 0x35, 0xF4, 0x37 332 | ])), '\u1E3F\uE7C7'); 333 | }, 'GB 18030 2000 vs 2005: U+1E3F, U+E7C7 (decoding)'); 334 | 335 | test(function() { 336 | // Regression test for https://github.com/whatwg/encoding/issues/22 337 | assert_array_equals( 338 | new TextEncoder('gb18030', {NONSTANDARD_allowLegacyEncoding: true}) 339 | .encode('\u1E3F\uE7C7'), 340 | [ 341 | 0xA8, 0xBC, 342 | 0x81, 0x35, 0xF4, 0x37 343 | ]); 344 | }, 'NONSTANDARD - GB 18030 2000 vs 2005: U+1E3F, U+E7C7 (encoding)'); 345 | 346 | test(function() { 347 | // Regression test for https://github.com/whatwg/encoding/issues/17 348 | assert_throws( 349 | new TypeError, 350 | function() { 351 | new TextEncoder('gb18030', {NONSTANDARD_allowLegacyEncoding: true}) 352 | .encode('\uE5E5'); 353 | }); 354 | }, 'NONSTANDARD - gb18030: U+E5E5 (encoding)'); 355 | 356 | 357 | test(function() { 358 | // Regression test for https://github.com/whatwg/encoding/issues/15 359 | var encoder = 360 | new TextEncoder('iso-2022-jp', {NONSTANDARD_allowLegacyEncoding: true}); 361 | 362 | [ 363 | //'\u000E', '\u000F', '\u001B', 364 | '\u00A5\u000E', //'\u00A5\u000F', '\u00A5\u001B' 365 | ].forEach(function(s) { 366 | assert_throws(new TypeError, function() { encoder.encode(s); }); 367 | }); 368 | 369 | }, 'NONSTANDARD - iso-2022-jp encoding attack (encoding)'); 370 | 371 | ['utf-16le', 'utf-16be'].forEach(function(encoding) { 372 | test(function() { 373 | var encoder = new TextEncoder(encoding, {NONSTANDARD_allowLegacyEncoding: true}); 374 | var decoder = new TextDecoder(encoding); 375 | 376 | var sample = "z\xA2\u6C34\uD834\uDD1E\uDBFF\uDFFD"; 377 | 378 | assert_equals(decoder.decode(encoder.encode(sample)), sample); 379 | 380 | }, 'NONSTANDARD - ' + encoding + ' (encoding)'); 381 | }); 382 | 383 | test(function() { 384 | var encoder = new TextEncoder(); 385 | assert_array_equals([].slice.call(encoder.encode(false)), [102, 97, 108, 115, 101]); 386 | assert_array_equals([].slice.call(encoder.encode(0)), [48]); 387 | }, 'encode() called with falsy arguments (polyfill bindings)'); 388 | 389 | test(function() { 390 | // Regression test for https://github.com/inexorabletash/text-encoding/issues/59 391 | assert_array_equals( 392 | new TextDecoder('windows-1255').decode(new Uint8Array([0xCA])), '\u05BA'); 393 | }, 'windows-1255 map 0xCA to U+05BA'); 394 | -------------------------------------------------------------------------------- /test/test-shift_jis.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | test( 5 | function () { 6 | var bytes = [129,64,129,65,129,66,129,67,129,68,129,69,129,70,129,71,129,72,129,73,129,74,129,75,129,76,129,77,129,78,129,79,129,80,129,81,129,82,129,83,129,84,129,85,129,86,129,87,129,88,129,89,129,90,129,91,129,92,129,93,129,94,129,95,129,98,129,99,129,100,129,101,129,102,129,103,129,104,129,105,129,106,129,107,129,108,129,109,129,110,129,111,129,112,129,113,129,114,129,115,129,116,129,117,129,118,129,119,129,120,129,121,129,122,129,123,129,125,129,126,129,128,129,129,129,130,129,131,129,132,129,133,129,134,129,135,129,136,129,137,129,138,129,139,129,140,129,141,129,142,129,143,129,144,129,147,129,148,129,149,129,150,129,151,129,152,129,153,129,154,129,155,129,156,129,157,129,158,129,159,129,160,129,161,129,162,129,163,129,164,129,165,129,166,129,167,129,168,129,169,129,170,129,171,129,172,129,184,129,185,129,186,129,187,129,188,129,189,129,190,129,191,129,200,129,201,129,203,129,204,129,205,129,206,129,218,129,219,129,220,129,221,129,222,129,223,129,224,129,225,129,226,129,227,129,228,129,229,129,230,129,231,129,232,129,240,129,241,129,242,129,243,129,244,129,245,129,246,129,247,129,252,130,79,130,80,130,81,130,82,130,83,130,84,130,85,130,86,130,87,130,88,130,96,130,97,130,98,130,99,130,100,130,101,130,102,130,103,130,104,130,105,130,106,130,107,130,108,130,109,130,110,130,111,130,112,130,113,130,114,130,115,130,116,130,117,130,118,130,119,130,120,130,121,130,129,130,130,130,131,130,132,130,133,130,134,130,135,130,136,130,137,130,138,130,139,130,140,130,141,130,142,130,143,130,144,130,145,130,146,130,147,130,148,130,149,130,150,130,151,130,152,130,153,130,154,130,159,130,160,130,161,130,162,130,163,130,164,130,165,130,166,130,167,130,168,130,169,130,170,130,171,130,172,130,173,130,174,130,175,130,176,130,177,130,178,130,179,130,180,130,181,130,182,130,183,130,184,130,185,130,186,130,187,130,188,130,189,130,190,130,191,130,192,130,193,130,194,130,195,130,196,130,197,130,198,130,199,130,200,130,201,130,202,130,203,130,204,130,205,130,206,130,207,130,208,130,209,130,210,130,211,130,212,130,213,130,214,130,215,130,216,130,217,130,218,130,219,130,220,130,221,130,222,130,223,130,224,130,225,130,226,130,227,130,228,130,229,130,230,130,231,130,232,130,233,130,234,130,235,130,236,130,237,130,238,130,239,130,240,130,241,131,64,131,65,131,66,131,67,131,68,131,69,131,70,131,71,131,72,131,73,131,74,131,75,131,76,131,77,131,78,131,79,131,80,131,81,131,82,131,83,131,84,131,85,131,86,131,87,131,88,131,89,131,90,131,91,131,92,131,93,131,94,131,95,131,96,131,97,131,98,131,99,131,100,131,101,131,102,131,103,131,104,131,105,131,106,131,107,131,108,131,109,131,110,131,111,131,112,131,113,131,114,131,115,131,116,131,117,131,118,131,119,131,120,131,121,131,122,131,123,131,124,131,125,131,126,131,128,131,129,131,130,131,131,131,132,131,133,131,134,131,135,131,136,131,137,131,138,131,139,131,140,131,141,131,142,131,143,131,144,131,145,131,146,131,147,131,148,131,149,131,150,131,159,131,160,131,161,131,162,131,163,131,164,131,165,131,166,131,167,131,168,131,169,131,170,131,171,131,172,131,173,131,174,131,175,131,176,131,177,131,178,131,179,131,180,131,181,131,182,131,191,131,192,131,193,131,194,131,195,131,196,131,197,131,198,131,199,131,200,131,201,131,202,131,203,131,204,131,205,131,206,131,207,131,208,131,209,131,210,131,211,131,212,131,213,131,214,132,64,132,65,132,66,132,67,132,68,132,69,132,70,132,71,132,72,132,73,132,74,132,75,132,76,132,77,132,78,132,79,132,80,132,81,132,82,132,83,132,84,132,85,132,86,132,87,132,88,132,89,132,90,132,91,132,92,132,93,132,94,132,95,132,96,132,112,132,113,132,114,132,115,132,116,132,117,132,118,132,119,132,120,132,121,132,122,132,123,132,124,132,125,132,126,132,128,132,129,132,130,132,131,132,132,132,133,132,134,132,135,132,136,132,137,132,138,132,139,132,140,132,141,132,142,132,143,132,144,132,145,132,159,132,160,132,161,132,162,132,163,132,164,132,165,132,166,132,167,132,168,132,169,132,170,132,171,132,172,132,173,132,174,132,175,132,176,132,177,132,178,132,179,132,180,132,181,132,182,132,183,132,184,132,185,132,186,132,187,132,188,132,189,132,190,129,224,129,223,129,231,129,227,129,219,129,218,129,230,129,191,129,190,136,159,136,160,136,161,136,162,136,163,136,164,136,165,136,166,136,167,136,168,136,169,136,170,136,171,136,172,136,173,136,174,136,175,136,176,136,177,136,178,136,179,136,180,136,181,136,182,136,183,136,184,136,185,136,186,136,187,136,188,136,189,136,190,136,191,136,192,136,193,136,194,136,195,136,196,136,197,136,198,136,199,136,200,136,201,136,202,136,203,136,204,136,205,136,206,136,207,136,208,136,209,136,210,136,211,136,212,136,213,136,214,136,215,136,216,136,217,136,218,136,219,136,220,136,221,136,222,136,223,136,224,136,225,136,226,136,227,136,228,136,229,136,230,136,231,136,232,136,233,136,234,136,235,136,236,136,237,136,238,136,239,136,240,136,241,136,242,136,243,136,244,136,245,136,246,136,247,136,248,136,249,136,250,136,251,136,252,137,64,137,65,137,66,137,67,137,68,137,69,137,70,137,71,137,72,137,73,137,74,137,75,137,76,137,77,137,78,137,79,137,80,137,81,137,82,137,83,137,84,137,85,137,86,137,87,137,88,137,89,137,90,137,91,137,92,137,93,137,94,137,95,137,96,137,97,137,98,137,99,137,100,137,101,137,102,137,103,137,104,137,105,137,106,137,107,137,108,137,109,137,110,137,111,137,112,137,113,137,114,137,115,137,116,137,117,137,118,137,119,137,120,137,121,137,122,137,123,137,124,137,125,137,126,137,128,137,129,137,130,137,131,137,132,137,133,137,134,137,135,137,136,137,137,137,138,137,139,137,140,137,141,137,142,137,143,137,144,137,145,137,146,137,147,137,148,137,149,137,150,137,151,137,152,137,153,137,154,137,155,137,156,137,157,137,158,137,159,137,160,137,161,137,162,137,163,137,164,137,165,137,166,137,167,137,168,137,169,137,170,137,171,137,172,137,173,137,174,137,175,137,176,137,177,137,178,137,179,137,180,137,181,137,182,137,183,137,184,137,185,137,186,137,187,137,188,137,189,137,190,137,191,137,192,137,193,137,194,137,195,137,196,137,197,137,198,137,199,137,200,137,201,137,202,137,203,137,204,137,205,137,206,137,207,137,208,137,209,137,210,137,211,137,212,137,213,137,214,137,215,137,216,137,217,137,218,137,219,137,220,137,221,137,222,137,223,137,224,137,225,137,226,137,227,137,228,137,229,137,230,137,231,137,232,137,233,137,234,137,235,137,236,137,237,137,238,137,239,137,240,137,241,137,242,137,243,137,244,137,245,137,246,137,247,137,248,137,249,137,250,137,251,137,252,138,64,138,65,138,66,138,67,138,68,138,69,138,70,138,71,138,72,138,73,138,74,138,75,138,76,138,77,138,78,138,79,138,80,138,81,138,82,138,83,138,84,138,85,138,86,138,87,138,88,138,89,138,90,138,91,138,92,138,93,138,94,138,95,138,96,138,97,138,98,138,99,138,100,138,101,138,102,138,103,138,104,138,105,138,106,138,107,138,108,138,109,138,110,138,111,138,112,138,113,138,114,138,115,138,116,138,117,138,118,138,119,138,120,138,121,138,122,138,123,138,124,138,125,138,126,138,128,138,129,138,130,138,131,138,132,138,133,138,134,138,135,138,136,138,137,138,138,138,139,138,140,138,141,138,142,138,143,138,144,138,145,138,146,138,147,138,148,138,149,138,150,138,151,138,152,138,153,138,154,138,155,138,156,138,157,138,158,138,159,138,160,138,161,138,162,138,163,138,164,138,165,138,166,138,167,138,168,138,169,138,170,138,171,138,172,138,173,138,174,138,175,138,176,138,177,138,178,138,179,138,180,138,181,138,182,138,183,138,184,138,185,138,186,138,187,138,188,138,189,138,190,138,191,138,192,138,193,138,194,138,195,138,196,138,197,138,198,138,199,138,200,138,201,138,202,138,203,138,204,138,205,138,206,138,207,138,208,138,209,138,210,138,211,138,212,138,213,138,214,138,215,138,216,138,217,138,218,138,219,138,220,138,221,138,222,138,223,138,224,138,225,138,226,138,227,138,228,138,229,138,230,138,231,138,232,138,233,138,234,138,235,138,236,138,237,138,238,138,239,138,240,138,241,138,242,138,243,138,244,138,245,138,246,138,247,138,248,138,249,138,250,138,251,138,252,139,64,139,65,139,66,139,67,139,68,139,69,139,70,139,71,139,72,139,73,139,74,139,75,139,76,139,77,139,78,139,79,139,80,139,81,139,82,139,83,139,84,139,85,139,86,139,87,139,88,139,89,139,90,139,91,139,92,139,93,139,94,139,95,139,96,139,97,139,98,139,99,139,100,139,101,139,102,139,103,139,104,139,105,139,106,139,107,139,108,139,109,139,110,139,111,139,112,139,113,139,114,139,115,139,116,139,117,139,118,139,119,139,120,139,121,139,122,139,123,139,124,139,125,139,126,139,128,139,129,139,130,139,131,139,132,139,133,139,134,139,135,139,136,139,137,139,138,139,139,139,140,139,141,139,142,139,143,139,144,139,145,139,146,139,147,139,148,139,149,139,150,139,151,139,152,139,153,139,154,139,155,139,156,139,157,139,158,139,159,139,160,139,161,139,162,139,163,139,164,139,165,139,166,139,167,139,168,139,169,139,170,139,171,139,172,139,173,139,174,139,175,139,176,139,177,139,178,139,179,139,180,139,181,139,182,139,183,139,184,139,185,139,186,139,187,139,188,139,189,139,190,139,191,139,192,139,193,139,194,139,195,139,196,139,197,139,198,139,199,139,200,139,201,139,202,139,203,139,204,139,205,139,206,139,207,139,208,139,209,139,210,139,211,139,212,139,213,139,214,139,215,139,216,139,217,139,218,139,219,139,220,139,221,139,222,139,223,139,224,139,225,139,226,139,227,139,228,139,229,139,230,139,231,139,232,139,233,139,234,139,235,139,236,139,237,139,238,139,239,139,240,139,241,139,242,139,243,139,244,139,245,139,246,139,247,139,248,139,249,139,250,139,251,139,252,140,64,140,65,140,66,140,67,140,68,140,69,140,70,140,71,140,72,140,73,140,74,140,75,140,76,140,77,140,78,140,79,140,80,140,81,140,82,140,83,140,84,140,85,140,86,140,87,140,88,140,89,140,90,140,91,140,92,140,93,140,94,140,95,140,96,140,97,140,98,140,99,140,100,140,101,140,102,140,103,140,104,140,105,140,106,140,107,140,108,140,109,140,110,140,111,140,112,140,113,140,114,140,115,140,116,140,117,140,118,140,119,140,120,140,121,140,122,140,123,140,124,140,125,140,126,140,128,140,129,140,130,140,131,140,132,140,133,140,134,140,135,140,136,140,137,140,138,140,139,140,140,140,141,140,142,140,143,140,144,140,145,140,146,140,147,140,148,140,149,140,150,140,151,140,152,140,153,140,154,140,155,140,156,140,157,140,158,140,159,140,160,140,161,140,162,140,163,140,164,140,165,140,166,140,167,140,168,140,169,140,170,140,171,140,172,140,173,140,174,140,175,140,176,140,177,140,178,140,179,140,180,140,181,140,182,140,183,140,184,140,185,140,186,140,187,140,188,140,189,140,190,140,191,140,192,140,193,140,194,140,195,140,196,140,197,140,198,140,199,140,200,140,201,140,202,140,203,140,204,140,205,140,206,140,207,140,208,140,209,140,210,140,211,140,212,140,213,140,214,140,215,140,216,140,217,140,218,140,219,140,220,140,221,140,222,140,223,140,224,140,225,140,226,140,227,140,228,140,229,140,230,140,231,140,232,140,233,140,234,140,235,140,236,140,237,140,238,140,239,140,240,140,241,140,242,140,243,140,244,140,245,140,246,140,247,140,248,140,249,140,250,140,251,140,252,141,64,141,65,141,66,141,67,141,68,141,69,141,70,141,71,141,72,141,73,141,74,141,75,141,76,141,77,141,78,141,79,141,80,141,81,141,82,141,83,141,84,141,85,141,86,141,87,141,88,141,89,141,90,141,91,141,92,141,93,141,94,141,95,141,96,141,97,141,98,141,99,141,100,141,101,141,102,141,103,141,104,141,105,141,106,141,107,141,108,141,109,141,110,141,111,141,112,141,113,141,114,141,115,141,116,141,117,141,118,141,119,141,120,141,121,141,122,141,123,141,124,141,125,141,126,141,128,141,129,141,130,141,131,141,132,141,133,141,134,141,135,141,136,141,137,141,138,141,139,141,140,141,141,141,142,141,143,141,144,141,145,141,146,141,147,141,148,141,149,141,150,141,151,141,152,141,153,141,154,141,155,141,156,141,157,141,158,141,159,141,160,141,161,141,162,141,163,141,164,141,165,141,166,141,167,141,168,141,169,141,170,141,171,141,172,141,173,141,174,141,175,141,176,141,177,141,178,141,179,141,180,141,181,141,182,141,183,141,184,141,185,141,186,141,187,141,188,141,189,141,190,141,191,141,192,141,193,141,194,141,195,141,196,141,197,141,198,141,199,141,200,141,201,141,202,141,203,141,204,141,205,141,206,141,207,141,208,141,209,141,210,141,211,141,212,141,213,141,214,141,215,141,216,141,217,141,218,141,219,141,220,141,221,141,222,141,223,141,224,141,225,141,226,141,227,141,228,141,229,141,230,141,231,141,232,141,233,141,234,141,235,141,236,141,237,141,238,141,239,141,240,141,241,141,242,141,243,141,244,141,245,141,246,141,247,141,248,141,249,141,250,141,251,141,252,142,64,142,65,142,66,142,67,142,68,142,69,142,70,142,71,142,72,142,73,142,74,142,75,142,76,142,77,142,78,142,79,142,80,142,81,142,82,142,83,142,84,142,85,142,86,142,87,142,88,142,89,142,90,142,91,142,92,142,93,142,94,142,95,142,96,142,97,142,98,142,99,142,100,142,101,142,102,142,103,142,104,142,105,142,106,142,107,142,108,142,109,142,110,142,111,142,112,142,113,142,114,142,115,142,116,142,117,142,118,142,119,142,120,142,121,142,122,142,123,142,124,142,125,142,126,142,128,142,129,142,130,142,131,142,132,142,133,142,134,142,135,142,136,142,137,142,138,142,139,142,140,142,141,142,142,142,143,142,144,142,145,142,146,142,147,142,148,142,149,142,150,142,151,142,152,142,153,142,154,142,155,142,156,142,157,142,158,142,159,142,160,142,161,142,162,142,163,142,164,142,165,142,166,142,167,142,168,142,169,142,170,142,171,142,172,142,173,142,174,142,175,142,176,142,177,142,178,142,179,142,180,142,181,142,182,142,183,142,184,142,185,142,186,142,187,142,188,142,189,142,190,142,191,142,192,142,193,142,194,142,195,142,196,142,197,142,198,142,199,142,200,142,201,142,202,142,203,142,204,142,205,142,206,142,207,142,208,142,209,142,210,142,211,142,212,142,213,142,214,142,215,142,216,142,217,142,218,142,219,142,220,142,221,142,222,142,223,142,224,142,225,142,226,142,227,142,228,142,229,142,230,142,231,142,232,142,233,142,234,142,235,142,236,142,237,142,238,142,239,142,240,142,241,142,242,142,243,142,244,142,245,142,246,142,247,142,248,142,249,142,250,142,251,142,252,143,64,143,65,143,66,143,67,143,68,143,69,143,70,143,71,143,72,143,73,143,74,143,75,143,76,143,77,143,78,143,79,143,80,143,81,143,82,143,83,143,84,143,85,143,86,143,87,143,88,143,89,143,90,143,91,143,92,143,93,143,94,143,95,143,96,143,97,143,98,143,99,143,100,143,101,143,102,143,103,143,104,143,105,143,106,143,107,143,108,143,109,143,110,143,111,143,112,143,113,143,114,143,115,143,116,143,117,143,118,143,119,143,120,143,121,143,122,143,123,143,124,143,125,143,126,143,128,143,129,143,130,143,131,143,132,143,133,143,134,143,135,143,136,143,137,143,138,143,139,143,140,143,141,143,142,143,143,143,144,143,145,143,146,143,147,143,148,143,149,143,150,143,151,143,152,143,153,143,154,143,155,143,156,143,157,143,158,143,159,143,160,143,161,143,162,143,163,143,164,143,165,143,166,143,167,143,168,143,169,143,170,143,171,143,172,143,173,143,174,143,175,143,176,143,177,143,178,143,179,143,180,143,181,143,182,143,183,143,184,143,185,143,186,143,187,143,188,143,189,143,190,143,191,143,192,143,193,143,194,143,195,143,196,143,197,143,198,143,199,143,200,143,201,143,202,143,203,143,204,143,205,143,206,143,207,143,208,143,209,143,210,143,211,143,212,143,213,143,214,143,215,143,216,143,217,143,218,143,219,143,220,143,221,143,222,143,223,143,224,143,225,143,226,143,227,143,228,143,229,143,230,143,231,143,232,143,233,143,234,143,235,143,236,143,237,143,238,143,239,143,240,143,241,143,242,143,243,143,244,143,245,143,246,143,247,143,248,143,249,143,250,143,251,143,252,144,64,144,65,144,66,144,67,144,68,144,69,144,70,144,71,144,72,144,73,144,74,144,75,144,76,144,77,144,78,144,79,144,80,144,81,144,82,144,83,144,84,144,85,144,86,144,87,144,88,144,89,144,90,144,91,144,92,144,93,144,94,144,95,144,96,144,97,144,98,144,99,144,100,144,101,144,102,144,103,144,104,144,105,144,106,144,107,144,108,144,109,144,110,144,111,144,112,144,113,144,114,144,115,144,116,144,117,144,118,144,119,144,120,144,121,144,122,144,123,144,124,144,125,144,126,144,128,144,129,144,130,144,131,144,132,144,133,144,134,144,135,144,136,144,137,144,138,144,139,144,140,144,141,144,142,144,143,144,144,144,145,144,146,144,147,144,148,144,149,144,150,144,151,144,152,144,153,144,154,144,155,144,156,144,157,144,158,144,159,144,160,144,161,144,162,144,163,144,164,144,165,144,166,144,167,144,168,144,169,144,170,144,171,144,172,144,173,144,174,144,175,144,176,144,177,144,178,144,179,144,180,144,181,144,182,144,183,144,184,144,185,144,186,144,187,144,188,144,189,144,190,144,191,144,192,144,193,144,194,144,195,144,196,144,197,144,198,144,199,144,200,144,201,144,202,144,203,144,204,144,205,144,206,144,207,144,208,144,209,144,210,144,211,144,212,144,213,144,214,144,215,144,216,144,217,144,218,144,219,144,220,144,221,144,222,144,223,144,224,144,225,144,226,144,227,144,228,144,229,144,230,144,231,144,232,144,233,144,234,144,235,144,236,144,237,144,238,144,239,144,240,144,241,144,242,144,243,144,244,144,245,144,246,144,247,144,248,144,249,144,250,144,251,144,252,145,64,145,65,145,66,145,67,145,68,145,69,145,70,145,71,145,72,145,73,145,74,145,75,145,76,145,77,145,78,145,79,145,80,145,81,145,82,145,83,145,84,145,85,145,86,145,87,145,88,145,89,145,90,145,91,145,92,145,93,145,94,145,95,145,96,145,97,145,98,145,99,145,100,145,101,145,102,145,103,145,104,145,105,145,106,145,107,145,108,145,109,145,110,145,111,145,112,145,113,145,114,145,115,145,116,145,117,145,118,145,119,145,120,145,121,145,122,145,123,145,124,145,125,145,126,145,128,145,129,145,130,145,131,145,132,145,133,145,134,145,135,145,136,145,137,145,138,145,139,145,140,145,141,145,142,145,143,145,144,145,145,145,146,145,147,145,148,145,149,145,150,145,151,145,152,145,153,145,154,145,155,145,156,145,157,145,158,145,159,145,160,145,161,145,162,145,163,145,164,145,165,145,166,145,167,145,168,145,169,145,170,145,171,145,172,145,173,145,174,145,175,145,176,145,177,145,178,145,179,145,180,145,181,145,182,145,183,145,184,145,185,145,186,145,187,145,188,145,189,145,190,145,191,145,192,145,193,145,194,145,195,145,196,145,197,145,198,145,199,145,200,145,201,145,202,145,203,145,204,145,205,145,206,145,207,145,208,145,209,145,210,145,211,145,212,145,213,145,214,145,215,145,216,145,217,145,218,145,219,145,220,145,221,145,222,145,223,145,224,145,225,145,226,145,227,145,228,145,229,145,230,145,231,145,232,145,233,145,234,145,235,145,236,145,237,145,238,145,239,145,240,145,241,145,242,145,243,145,244,145,245,145,246,145,247,145,248,145,249,145,250,145,251,145,252,146,64,146,65,146,66,146,67,146,68,146,69,146,70,146,71,146,72,146,73,146,74,146,75,146,76,146,77,146,78,146,79,146,80,146,81,146,82,146,83,146,84,146,85,146,86,146,87,146,88,146,89,146,90,146,91,146,92,146,93,146,94,146,95,146,96,146,97,146,98,146,99,146,100,146,101,146,102,146,103,146,104,146,105,146,106,146,107,146,108,146,109,146,110,146,111,146,112,146,113,146,114,146,115,146,116,146,117,146,118,146,119,146,120,146,121,146,122,146,123,146,124,146,125,146,126,146,128,146,129,146,130,146,131,146,132,146,133,146,134,146,135,146,136,146,137,146,138,146,139,146,140,146,141,146,142,146,143,146,144,146,145,146,146,146,147,146,148,146,149,146,150,146,151,146,152,146,153,146,154,146,155,146,156,146,157,146,158,146,159,146,160,146,161,146,162,146,163,146,164,146,165,146,166,146,167,146,168,146,169,146,170,146,171,146,172,146,173,146,174,146,175,146,176,146,177,146,178,146,179,146,180,146,181,146,182,146,183,146,184,146,185,146,186,146,187,146,188,146,189,146,190,146,191,146,192,146,193,146,194,146,195,146,196,146,197,146,198,146,199,146,200,146,201,146,202,146,203,146,204,146,205,146,206,146,207,146,208,146,209,146,210,146,211,146,212,146,213,146,214,146,215,146,216,146,217,146,218,146,219,146,220,146,221,146,222,146,223,146,224,146,225,146,226,146,227,146,228,146,229,146,230,146,231,146,232,146,233,146,234,146,235,146,236,146,237,146,238,146,239,146,240,146,241,146,242,146,243,146,244,146,245,146,246,146,247,146,248,146,249,146,250,146,251,146,252,147,64,147,65,147,66,147,67,147,68,147,69,147,70,147,71,147,72,147,73,147,74,147,75,147,76,147,77,147,78,147,79,147,80,147,81,147,82,147,83,147,84,147,85,147,86,147,87,147,88,147,89,147,90,147,91,147,92,147,93,147,94,147,95,147,96,147,97,147,98,147,99,147,100,147,101,147,102,147,103,147,104,147,105,147,106,147,107,147,108,147,109,147,110,147,111,147,112,147,113,147,114,147,115,147,116,147,117,147,118,147,119,147,120,147,121,147,122,147,123,147,124,147,125,147,126,147,128,147,129,147,130,147,131,147,132,147,133,147,134,147,135,147,136,147,137,147,138,147,139,147,140,147,141,147,142,147,143,147,144,147,145,147,146,147,147,147,148,147,149,147,150,147,151,147,152,147,153,147,154,147,155,147,156,147,157,147,158,147,159,147,160,147,161,147,162,147,163,147,164,147,165,147,166,147,167,147,168,147,169,147,170,147,171,147,172,147,173,147,174,147,175,147,176,147,177,147,178,147,179,147,180,147,181,147,182,147,183,147,184,147,185,147,186,147,187,147,188,147,189,147,190,147,191,147,192,147,193,147,194,147,195,147,196,147,197,147,198,147,199,147,200,147,201,147,202,147,203,147,204,147,205,147,206,147,207,147,208,147,209,147,210,147,211,147,212,147,213,147,214,147,215,147,216,147,217,147,218,147,219,147,220,147,221,147,222,147,223,147,224,147,225,147,226,147,227,147,228,147,229,147,230,147,231,147,232,147,233,147,234,147,235,147,236,147,237,147,238,147,239,147,240,147,241,147,242,147,243,147,244,147,245,147,246,147,247,147,248,147,249,147,250,147,251,147,252,148,64,148,65,148,66,148,67,148,68,148,69,148,70,148,71,148,72,148,73,148,74,148,75,148,76,148,77,148,78,148,79,148,80,148,81,148,82,148,83,148,84,148,85,148,86,148,87,148,88,148,89,148,90,148,91,148,92,148,93,148,94,148,95,148,96,148,97,148,98,148,99,148,100,148,101,148,102,148,103,148,104,148,105,148,106,148,107,148,108,148,109,148,110,148,111,148,112,148,113,148,114,148,115,148,116,148,117,148,118,148,119,148,120,148,121,148,122,148,123,148,124,148,125,148,126,148,128,148,129,148,130,148,131,148,132,148,133,148,134,148,135,148,136,148,137,148,138,148,139,148,140,148,141,148,142,148,143,148,144,148,145,148,146,148,147,148,148,148,149,148,150,148,151,148,152,148,153,148,154,148,155,148,156,148,157,148,158,148,159,148,160,148,161,148,162,148,163,148,164,148,165,148,166,148,167,148,168,148,169,148,170,148,171,148,172,148,173,148,174,148,175,148,176,148,177,148,178,148,179,148,180,148,181,148,182,148,183,148,184,148,185,148,186,148,187,148,188,148,189,148,190,148,191,148,192,148,193,148,194,148,195,148,196,148,197,148,198,148,199,148,200,148,201,148,202,148,203,148,204,148,205,148,206,148,207,148,208,148,209,148,210,148,211,148,212,148,213,148,214,148,215,148,216,148,217,148,218,148,219,148,220,148,221,148,222,148,223,148,224,148,225,148,226,148,227,148,228,148,229,148,230,148,231,148,232,148,233,148,234,148,235,148,236,148,237,148,238,148,239,148,240,148,241,148,242,148,243,148,244,148,245,148,246,148,247,148,248,148,249,148,250,148,251,148,252,149,64,149,65,149,66,149,67,149,68,149,69,149,70,149,71,149,72,149,73,149,74,149,75,149,76,149,77,149,78,149,79,149,80,149,81,149,82,149,83,149,84,149,85,149,86,149,87,149,88,149,89,149,90,149,91,149,92,149,93,149,94,149,95,149,96,149,97,149,98,149,99,149,100,149,101,149,102,149,103,149,104,149,105,149,106,149,107,149,108,149,109,149,110,149,111,149,112,149,113,149,114,149,115,149,116,149,117,149,118,149,119,149,120,149,121,149,122,149,123,149,124,149,125,149,126,149,128,149,129,149,130,149,131,149,132,149,133,149,134,149,135,149,136,149,137,149,138,149,139,149,140,149,141,149,142,149,143,149,144,149,145,149,146,149,147,149,148,149,149,149,150,149,151,149,152,149,153,149,154,149,155,149,156,149,157,149,158,149,159,149,160,149,161,149,162,149,163,149,164,149,165,149,166,149,167,149,168,149,169,149,170,149,171,149,172,149,173,149,174,149,175,149,176,149,177,149,178,149,179,149,180,149,181,149,182,149,183,149,184,149,185,149,186,149,187,149,188,149,189,149,190,149,191,149,192,149,193,149,194,149,195,149,196,149,197,149,198,149,199,149,200,149,201,149,202,149,203,149,204,149,205,149,206,149,207,149,208,149,209,149,210,149,211,149,212,149,213,149,214,149,215,149,216,149,217,149,218,149,219,149,220,149,221,149,222,149,223,149,224,149,225,149,226,149,227,149,228,149,229,149,230,149,231,149,232,149,233,149,234,149,235,149,236,149,237,149,238,149,239,149,240,149,241,149,242,149,243,149,244,149,245,149,246,149,247,149,248,149,249,149,250,149,251,149,252,150,64,150,65,150,66,150,67,150,68,150,69,150,70,150,71,150,72,150,73,150,74,150,75,150,76,150,77,150,78,150,79,150,80,150,81,150,82,150,83,150,84,150,85,150,86,150,87,150,88,150,89,150,90,150,91,150,92,150,93,150,94,150,95,150,96,150,97,150,98,150,99,150,100,150,101,150,102,150,103,150,104,150,105,150,106,150,107,150,108,150,109,150,110,150,111,150,112,150,113,150,114,150,115,150,116,150,117,150,118,150,119,150,120,150,121,150,122,150,123,150,124,150,125,150,126,150,128,150,129,150,130,150,131,150,132,150,133,150,134,150,135,150,136,150,137,150,138,150,139,150,140,150,141,150,142,150,143,150,144,150,145,150,146,150,147,150,148,150,149,150,150,150,151,150,152,150,153,150,154,150,155,150,156,150,157,150,158,150,159,150,160,150,161,150,162,150,163,150,164,150,165,150,166,150,167,150,168,150,169,150,170,150,171,150,172,150,173,150,174,150,175,150,176,150,177,150,178,150,179,150,180,150,181,150,182,150,183,150,184,150,185,150,186,150,187,150,188,150,189,150,190,150,191,150,192,150,193,150,194,150,195,150,196,150,197,150,198,150,199,150,200,150,201,150,202,150,203,150,204,150,205,150,206,150,207,150,208,150,209,150,210,150,211,150,212,150,213,150,214,150,215,150,216,150,217,150,218,150,219,150,220,150,221,150,222,150,223,150,224,150,225,150,226,150,227,150,228,150,229,150,230,150,231,150,232,150,233,150,234,150,235,150,236,150,237,150,238,150,239,150,240,150,241,150,242,150,243,150,244,150,245,150,246,150,247,150,248,150,249,150,250,150,251,150,252,151,64,151,65,151,66,151,67,151,68,151,69,151,70,151,71,151,72,151,73,151,74,151,75,151,76,151,77,151,78,151,79,151,80,151,81,151,82,151,83,151,84,151,85,151,86,151,87,151,88,151,89,151,90,151,91,151,92,151,93,151,94,151,95,151,96,151,97,151,98,151,99,151,100,151,101,151,102,151,103,151,104,151,105,151,106,151,107,151,108,151,109,151,110,151,111,151,112,151,113,151,114,151,115,151,116,151,117,151,118,151,119,151,120,151,121,151,122,151,123,151,124,151,125,151,126,151,128,151,129,151,130,151,131,151,132,151,133,151,134,151,135,151,136,151,137,151,138,151,139,151,140,151,141,151,142,151,143,151,144,151,145,151,146,151,147,151,148,151,149,151,150,151,151,151,152,151,153,151,154,151,155,151,156,151,157,151,158,151,159,151,160,151,161,151,162,151,163,151,164,151,165,151,166,151,167,151,168,151,169,151,170,151,171,151,172,151,173,151,174,151,175,151,176,151,177,151,178,151,179,151,180,151,181,151,182,151,183,151,184,151,185,151,186,151,187,151,188,151,189,151,190,151,191,151,192,151,193,151,194,151,195,151,196,151,197,151,198,151,199,151,200,151,201,151,202,151,203,151,204,151,205,151,206,151,207,151,208,151,209,151,210,151,211,151,212,151,213,151,214,151,215,151,216,151,217,151,218,151,219,151,220,151,221,151,222,151,223,151,224,151,225,151,226,151,227,151,228,151,229,151,230,151,231,151,232,151,233,151,234,151,235,151,236,151,237,151,238,151,239,151,240,151,241,151,242,151,243,151,244,151,245,151,246,151,247,151,248,151,249,151,250,151,251,151,252,152,64,152,65,152,66,152,67,152,68,152,69,152,70,152,71,152,72,152,73,152,74,152,75,152,76,152,77,152,78,152,79,152,80,152,81,152,82,152,83,152,84,152,85,152,86,152,87,152,88,152,89,152,90,152,91,152,92,152,93,152,94,152,95,152,96,152,97,152,98,152,99,152,100,152,101,152,102,152,103,152,104,152,105,152,106,152,107,152,108,152,109,152,110,152,111,152,112,152,113,152,114,152,159,152,160,152,161,152,162,152,163,152,164,152,165,152,166,152,167,152,168,152,169,152,170,152,171,152,172,152,173,152,174,152,175,152,176,152,177,152,178,152,179,152,180,152,181,152,182,152,183,152,184,152,185,152,186,152,187,152,188,152,189,152,190,152,191,152,192,152,193,152,194,152,195,152,196,152,197,152,198,152,199,152,200,152,201,152,202,152,203,152,204,152,205,152,206,152,207,152,208,152,209,152,210,152,211,152,212,152,213,152,214,152,215,152,216,152,217,152,218,152,219,152,220,152,221,152,222,152,223,152,224,152,225,152,226,152,227,152,228,152,229,152,230,152,231,152,232,152,233,152,234,152,235,152,236,152,237,152,238,152,239,152,240,152,241,152,242,152,243,152,244,152,245,152,246,152,247,152,248,152,249,152,250,152,251,152,252,153,64,153,65,153,66,153,67,153,68,153,69,153,70,153,71,153,72,153,73,153,74,153,75,153,76,153,77,153,78,153,79,153,80,153,81,153,82,153,83,153,84,153,85,153,86,153,87,153,88,153,89,153,90,153,91,153,92,153,93,153,94,153,95,153,96,153,97,153,98,153,99,153,100,153,101,153,102,153,103,153,104,153,105,153,106,153,107,153,108,153,109,153,110,153,111,153,112,153,113,153,114,153,115,153,116,153,117,153,118,153,119,153,120,153,121,153,122,153,123,153,124,153,125,153,126,153,128,153,129,153,130,153,131,153,132,153,133,153,134,153,135,153,136,153,137,153,138,153,139,153,140,153,141,153,142,153,143,153,144,153,145,153,146,153,147,153,148,153,149,153,150,153,151,153,152,153,153,153,154,153,155,153,156,153,157,153,158,153,159,153,160,153,161,153,162,153,163,153,164,153,165,153,166,153,167,153,168,153,169,153,170,153,171,153,172,153,173,153,174,153,175,153,176,153,177,153,178,153,179,153,180,153,181,153,182,153,183,153,184,153,185,153,186,153,187,153,188,153,189,153,190,153,191,153,192,153,193,153,194,153,195,153,196,153,197,153,198,153,199,153,200,153,201,153,202,153,203,153,204,153,205,153,206,153,207,153,208,153,209,153,210,153,211,153,212,153,213,153,214,153,215,153,216,153,217,153,218,153,219,153,220,153,221,153,222,153,223,153,224,153,225,153,226,153,227,153,228,153,229,153,230,153,231,153,232,153,233,153,234,153,235,153,236,153,237,153,238,153,239,153,240,153,241,153,242,153,243,153,244,153,245,153,246,153,247,153,248,153,249,153,250,153,251,153,252,154,64,154,65,154,66,154,67,154,68,154,69,154,70,154,71,154,72,154,73,154,74,154,75,154,76,154,77,154,78,154,79,154,80,154,81,154,82,154,83,154,84,154,85,154,86,154,87,154,88,154,89,154,90,154,91,154,92,154,93,154,94,154,95,154,96,154,97,154,98,154,99,154,100,154,101,154,102,154,103,154,104,154,105,154,106,154,107,154,108,154,109,154,110,154,111,154,112,154,113,154,114,154,115,154,116,154,117,154,118,154,119,154,120,154,121,154,122,154,123,154,124,154,125,154,126,154,128,154,129,154,130,154,131,154,132,154,133,154,134,154,135,154,136,154,137,154,138,154,139,154,140,154,141,154,142,154,143,154,144,154,145,154,146,154,147,154,148,154,149,154,150,154,151,154,152,154,153,154,154,154,155,154,156,154,157,154,158,154,159,154,160,154,161,154,162,154,163,154,164,154,165,154,166,154,167,154,168,154,169,154,170,154,171,154,172,154,173,154,174,154,175,154,176,154,177,154,178,154,179,154,180,154,181,154,182,154,183,154,184,154,185,154,186,154,187,154,188,154,189,154,190,154,191,154,192,154,193,154,194,154,195,154,196,154,197,154,198,154,199,154,200,154,201,154,202,154,203,154,204,154,205,154,206,154,207,154,208,154,209,154,210,154,211,154,212,154,213,154,214,154,215,154,216,154,217,154,218,154,219,154,220,154,221,154,222,154,223,154,224,154,225,154,226,154,227,154,228,154,229,154,230,154,231,154,232,154,233,154,234,154,235,154,236,154,237,154,238,154,239,154,240,154,241,154,242,154,243,154,244,154,245,154,246,154,247,154,248,154,249,154,250,154,251,154,252,155,64,155,65,155,66,155,67,155,68,155,69,155,70,155,71,155,72,155,73,155,74,155,75,155,76,155,77,155,78,155,79,155,80,155,81,155,82,155,83,155,84,155,85,155,86,155,87,155,88,155,89,155,90,155,91,155,92,155,93,155,94,155,95,155,96,155,97,155,98,155,99,155,100,155,101,155,102,155,103,155,104,155,105,155,106,155,107,155,108,155,109,155,110,155,111,155,112,155,113,155,114,155,115,155,116,155,117,155,118,155,119,155,120,155,121,155,122,155,123,155,124,155,125,155,126,155,128,155,129,155,130,155,131,155,132,155,133,155,134,155,135,155,136,155,137,155,138,155,139,155,140,155,141,155,142,155,143,155,144,155,145,155,146,155,147,155,148,155,149,155,150,155,151,155,152,155,153,155,154,155,155,155,156,155,157,155,158,155,159,155,160,155,161,155,162,155,163,155,164,155,165,155,166,155,167,155,168,155,169,155,170,155,171,155,172,155,173,155,174,155,175,155,176,155,177,155,178,155,179,155,180,155,181,155,182,155,183,155,184,155,185,155,186,155,187,155,188,155,189,155,190,155,191,155,192,155,193,155,194,155,195,155,196,155,197,155,198,155,199,155,200,155,201,155,202,155,203,155,204,155,205,155,206,155,207,155,208,155,209,155,210,155,211,155,212,155,213,155,214,155,215,155,216,155,217,155,218,155,219,155,220,155,221,155,222,155,223,155,224,155,225,155,226,155,227,155,228,155,229,155,230,155,231,155,232,155,233,155,234,155,235,155,236,155,237,155,238,155,239,155,240,155,241,155,242,155,243,155,244,155,245,155,246,155,247,155,248,155,249,155,250,155,251,155,252,156,64,156,65,156,66,156,67,156,68,156,69,156,70,156,71,156,72,156,73,156,74,156,75,156,76,156,77,156,78,156,79,156,80,156,81,156,82,156,83,156,84,156,85,156,86,156,87,156,88,156,89,156,90,156,91,156,92,156,93,156,94,156,95,156,96,156,97,156,98,156,99,156,100,156,101,156,102,156,103,156,104,156,105,156,106,156,107,156,108,156,109,156,110,156,111,156,112,156,113,156,114,156,115,156,116,156,117,156,118,156,119,156,120,156,121,156,122,156,123,156,124,156,125,156,126,156,128,156,129,156,130,156,131,156,132,156,133,156,134,156,135,156,136,156,137,156,138,156,139,156,140,156,141,156,142,156,143,156,144,156,145,156,146,156,147,156,148,156,149,156,150,156,151,156,152,156,153,156,154,156,155,156,156,156,157,156,158,156,159,156,160,156,161,156,162,156,163,156,164,156,165,156,166,156,167,156,168,156,169,156,170,156,171,156,172,156,173,156,174,156,175,156,176,156,177,156,178,156,179,156,180,156,181,156,182,156,183,156,184,156,185,156,186,156,187,156,188,156,189,156,190,156,191,156,192,156,193,156,194,156,195,156,196,156,197,156,198,156,199,156,200,156,201,156,202,156,203,156,204,156,205,156,206,156,207,156,208,156,209,156,210,156,211,156,212,156,213,156,214,156,215,156,216,156,217,156,218,156,219,156,220,156,221,156,222,156,223,156,224,156,225,156,226,156,227,156,228,156,229,156,230,156,231,156,232,156,233,156,234,156,235,156,236,156,237,156,238,156,239,156,240,156,241,156,242,156,243,156,244,156,245,156,246,156,247,156,248,156,249,156,250,156,251,156,252,157,64,157,65,157,66,157,67,157,68,157,69,157,70,157,71,157,72,157,73,157,74,157,75,157,76,157,77,157,78,157,79,157,80,157,81,157,82,157,83,157,84,157,85,157,86,157,87,157,88,157,89,157,90,157,91,157,92,157,93,157,94,157,95,157,96,157,97,157,98,157,99,157,100,157,101,157,102,157,103,157,104,157,105,157,106,157,107,157,108,157,109,157,110,157,111,157,112,157,113,157,114,157,115,157,116,157,117,157,118,157,119,157,120,157,121,157,122,157,123,157,124,157,125,157,126,157,128,157,129,157,130,157,131,157,132,157,133,157,134,157,135,157,136,157,137,157,138,157,139,157,140,157,141,157,142,157,143,157,144,157,145,157,146,157,147,157,148,157,149,157,150,157,151,157,152,157,153,157,154,157,155,157,156,157,157,157,158,157,159,157,160,157,161,157,162,157,163,157,164,157,165,157,166,157,167,157,168,157,169,157,170,157,171,157,172,157,173,157,174,157,175,157,176,157,177,157,178,157,179,157,180,157,181,157,182,157,183,157,184,157,185,157,186,157,187,157,188,157,189,157,190,157,191,157,192,157,193,157,194,157,195,157,196,157,197,157,198,157,199,157,200,157,201,157,202,157,203,157,204,157,205,157,206,157,207,157,208,157,209,157,210,157,211,157,212,157,213,157,214,157,215,157,216,157,217,157,218,157,219,157,220,157,221,157,222,157,223,157,224,157,225,157,226,157,227,157,228,157,229,157,230,157,231,157,232,157,233,157,234,157,235,157,236,157,237,157,238,157,239,157,240,157,241,157,242,157,243,157,244,157,245,157,246,157,247,157,248,157,249,157,250,157,251,157,252,158,64,158,65,158,66,158,67,158,68,158,69,158,70,158,71,158,72,158,73,158,74,158,75,158,76,158,77,158,78,158,79,158,80,158,81,158,82,158,83,158,84,158,85,158,86,158,87,158,88,158,89,158,90,158,91,158,92,158,93,158,94,158,95,158,96,158,97,158,98,158,99,158,100,158,101,158,102,158,103,158,104,158,105,158,106,158,107,158,108,158,109,158,110,158,111,158,112,158,113,158,114,158,115,158,116,158,117,158,118,158,119,158,120,158,121,158,122,158,123,158,124,158,125,158,126,158,128,158,129,158,130,158,131,158,132,158,133,158,134,158,135,158,136,158,137,158,138,158,139,158,140,158,141,158,142,158,143,158,144,158,145,158,146,158,147,158,148,158,149,158,150,158,151,158,152,158,153,158,154,158,155,158,156,158,157,158,158,158,159,158,160,158,161,158,162,158,163,158,164,158,165,158,166,158,167,158,168,158,169,158,170,158,171,158,172,158,173,158,174,158,175,158,176,158,177,158,178,158,179,158,180,158,181,158,182,158,183,158,184,158,185,158,186,158,187,158,188,158,189,158,190,158,191,158,192,158,193,158,194,158,195,158,196,158,197,158,198,158,199,158,200,158,201,158,202,158,203,158,204,158,205,158,206,158,207,158,208,158,209,158,210,158,211,158,212,158,213,158,214,158,215,158,216,158,217,158,218,158,219,158,220,158,221,158,222,158,223,158,224,158,225,158,226,158,227,158,228,158,229,158,230,158,231,158,232,158,233,158,234,158,235,158,236,158,237,158,238,158,239,158,240,158,241,158,242,158,243,158,244,158,245,158,246,158,247,158,248,158,249,158,250,158,251,158,252,159,64,159,65,159,66,159,67,159,68,159,69,159,70,159,71,159,72,159,73,159,74,159,75,159,76,159,77,159,78,159,79,159,80,159,81,159,82,159,83,159,84,159,85,159,86,159,87,159,88,159,89,159,90,159,91,159,92,159,93,159,94,159,95,159,96,159,97,159,98,159,99,159,100,159,101,159,102,159,103,159,104,159,105,159,106,159,107,159,108,159,109,159,110,159,111,159,112,159,113,159,114,159,115,159,116,159,117,159,118,159,119,159,120,159,121,159,122,159,123,159,124,159,125,159,126,159,128,159,129,159,130,159,131,159,132,159,133,159,134,159,135,159,136,159,137,159,138,159,139,159,140,159,141,159,142,159,143,159,144,159,145,159,146,159,147,159,148,159,149,159,150,159,151,159,152,159,153,159,154,159,155,159,156,159,157,159,158,159,159,159,160,159,161,159,162,159,163,159,164,159,165,159,166,159,167,159,168,159,169,159,170,159,171,159,172,159,173,159,174,159,175,159,176,159,177,159,178,159,179,159,180,159,181,159,182,159,183,159,184,159,185,159,186,159,187,159,188,159,189,159,190,159,191,159,192,159,193,159,194,159,195,159,196,159,197,159,198,159,199,159,200,159,201,159,202,159,203,159,204,159,205,159,206,159,207,159,208,159,209,159,210,159,211,159,212,159,213,159,214,159,215,159,216,159,217,159,218,159,219,159,220,159,221,159,222,159,223,159,224,159,225,159,226,159,227,159,228,159,229,159,230,159,231,159,232,159,233,159,234,159,235,159,236,159,237,159,238,159,239,159,240,159,241,159,242,159,243,159,244,159,245,159,246,159,247,159,248,159,249,159,250,159,251,159,252,224,64,224,65,224,66,224,67,224,68,224,69,224,70,224,71,224,72,224,73,224,74,224,75,224,76,224,77,224,78,224,79,224,80,224,81,224,82,224,83,224,84,224,85,224,86,224,87,224,88,224,89,224,90,224,91,224,92,224,93,224,94,224,95,224,96,224,97,224,98,224,99,224,100,224,101,224,102,224,103,224,104,224,105,224,106,224,107,224,108,224,109,224,110,224,111,224,112,224,113,224,114,224,115,224,116,224,117,224,118,224,119,224,120,224,121,224,122,224,123,224,124,224,125,224,126,224,128,224,129,224,130,224,131,224,132,224,133,224,134,224,135,224,136,224,137,224,138,224,139,224,140,224,141,224,142,224,143,224,144,224,145,224,146,224,147,224,148,224,149,224,150,224,151,224,152,224,153,224,154,224,155,224,156,224,157,224,158,224,159,224,160,224,161,224,162,224,163,224,164,224,165,224,166,224,167,224,168,224,169,224,170,224,171,224,172,224,173,224,174,224,175,224,176,224,177,224,178,224,179,224,180,224,181,224,182,224,183,224,184,224,185,224,186,224,187,224,188,224,189,224,190,224,191,224,192,224,193,224,194,224,195,224,196,224,197,224,198,224,199,224,200,224,201,224,202,224,203,224,204,224,205,224,206,224,207,224,208,224,209,224,210,224,211,224,212,224,213,224,214,224,215,224,216,224,217,224,218,224,219,224,220,224,221,224,222,224,223,224,224,224,225,224,226,224,227,224,228,224,229,224,230,224,231,224,232,224,233,224,234,224,235,224,236,224,237,224,238,224,239,224,240,224,241,224,242,224,243,224,244,224,245,224,246,224,247,224,248,224,249,224,250,224,251,224,252,225,64,225,65,225,66,225,67,225,68,225,69,225,70,225,71,225,72,225,73,225,74,225,75,225,76,225,77,225,78,225,79,225,80,225,81,225,82,225,83,225,84,225,85,225,86,225,87,225,88,225,89,225,90,225,91,225,92,225,93,225,94,225,95,225,96,225,97,225,98,225,99,225,100,225,101,225,102,225,103,225,104,225,105,225,106,225,107,225,108,225,109,225,110,225,111,225,112,225,113,225,114,225,115,225,116,225,117,225,118,225,119,225,120,225,121,225,122,225,123,225,124,225,125,225,126,225,128,225,129,225,130,225,131,225,132,225,133,225,134,225,135,225,136,225,137,225,138,225,139,225,140,225,141,225,142,225,143,225,144,225,145,225,146,225,147,225,148,225,149,225,150,225,151,225,152,225,153,225,154,225,155,225,156,225,157,225,158,225,159,225,160,225,161,225,162,225,163,225,164,225,165,225,166,225,167,225,168,225,169,225,170,225,171,225,172,225,173,225,174,225,175,225,176,225,177,225,178,225,179,225,180,225,181,225,182,225,183,225,184,225,185,225,186,225,187,225,188,225,189,225,190,225,191,225,192,225,193,225,194,225,195,225,196,225,197,225,198,225,199,225,200,225,201,225,202,225,203,225,204,225,205,225,206,225,207,225,208,225,209,225,210,225,211,225,212,225,213,225,214,225,215,225,216,225,217,225,218,225,219,225,220,225,221,225,222,225,223,225,224,225,225,225,226,225,227,225,228,225,229,225,230,225,231,225,232,225,233,225,234,225,235,225,236,225,237,225,238,225,239,225,240,225,241,225,242,225,243,225,244,225,245,225,246,225,247,225,248,225,249,225,250,225,251,225,252,226,64,226,65,226,66,226,67,226,68,226,69,226,70,226,71,226,72,226,73,226,74,226,75,226,76,226,77,226,78,226,79,226,80,226,81,226,82,226,83,226,84,226,85,226,86,226,87,226,88,226,89,226,90,226,91,226,92,226,93,226,94,226,95,226,96,226,97,226,98,226,99,226,100,226,101,226,102,226,103,226,104,226,105,226,106,226,107,226,108,226,109,226,110,226,111,226,112,226,113,226,114,226,115,226,116,226,117,226,118,226,119,226,120,226,121,226,122,226,123,226,124,226,125,226,126,226,128,226,129,226,130,226,131,226,132,226,133,226,134,226,135,226,136,226,137,226,138,226,139,226,140,226,141,226,142,226,143,226,144,226,145,226,146,226,147,226,148,226,149,226,150,226,151,226,152,226,153,226,154,226,155,226,156,226,157,226,158,226,159,226,160,226,161,226,162,226,163,226,164,226,165,226,166,226,167,226,168,226,169,226,170,226,171,226,172,226,173,226,174,226,175,226,176,226,177,226,178,226,179,226,180,226,181,226,182,226,183,226,184,226,185,226,186,226,187,226,188,226,189,226,190,226,191,226,192,226,193,226,194,226,195,226,196,226,197,226,198,226,199,226,200,226,201,226,202,226,203,226,204,226,205,226,206,226,207,226,208,226,209,226,210,226,211,226,212,226,213,226,214,226,215,226,216,226,217,226,218,226,219,226,220,226,221,226,222,226,223,226,224,226,225,226,226,226,227,226,228,226,229,226,230,226,231,226,232,226,233,226,234,226,235,226,236,226,237,226,238,226,239,226,240,226,241,226,242,226,243,226,244,226,245,226,246,226,247,226,248,226,249,226,250,226,251,226,252,227,64,227,65,227,66,227,67,227,68,227,69,227,70,227,71,227,72,227,73,227,74,227,75,227,76,227,77,227,78,227,79,227,80,227,81,227,82,227,83,227,84,227,85,227,86,227,87,227,88,227,89,227,90,227,91,227,92,227,93,227,94,227,95,227,96,227,97,227,98,227,99,227,100,227,101,227,102,227,103,227,104,227,105,227,106,227,107,227,108,227,109,227,110,227,111,227,112,227,113,227,114,227,115,227,116,227,117,227,118,227,119,227,120,227,121,227,122,227,123,227,124,227,125,227,126,227,128,227,129,227,130,227,131,227,132,227,133,227,134,227,135,227,136,227,137,227,138,227,139,227,140,227,141,227,142,227,143,227,144,227,145,227,146,227,147,227,148,227,149,227,150,227,151,227,152,227,153,227,154,227,155,227,156,227,157,227,158,227,159,227,160,227,161,227,162,227,163,227,164,227,165,227,166,227,167,227,168,227,169,227,170,227,171,227,172,227,173,227,174,227,175,227,176,227,177,227,178,227,179,227,180,227,181,227,182,227,183,227,184,227,185,227,186,227,187,227,188,227,189,227,190,227,191,227,192,227,193,227,194,227,195,227,196,227,197,227,198,227,199,227,200,227,201,227,202,227,203,227,204,227,205,227,206,227,207,227,208,227,209,227,210,227,211,227,212,227,213,227,214,227,215,227,216,227,217,227,218,227,219,227,220,227,221,227,222,227,223,227,224,227,225,227,226,227,227,227,228,227,229,227,230,227,231,227,232,227,233,227,234,227,235,227,236,227,237,227,238,227,239,227,240,227,241,227,242,227,243,227,244,227,245,227,246,227,247,227,248,227,249,227,250,227,251,227,252,228,64,228,65,228,66,228,67,228,68,228,69,228,70,228,71,228,72,228,73,228,74,228,75,228,76,228,77,228,78,228,79,228,80,228,81,228,82,228,83,228,84,228,85,228,86,228,87,228,88,228,89,228,90,228,91,228,92,228,93,228,94,228,95,228,96,228,97,228,98,228,99,228,100,228,101,228,102,228,103,228,104,228,105,228,106,228,107,228,108,228,109,228,110,228,111,228,112,228,113,228,114,228,115,228,116,228,117,228,118,228,119,228,120,228,121,228,122,228,123,228,124,228,125,228,126,228,128,228,129,228,130,228,131,228,132,228,133,228,134,228,135,228,136,228,137,228,138,228,139,228,140,228,141,228,142,228,143,228,144,228,145,228,146,228,147,228,148,228,149,228,150,228,151,228,152,228,153,228,154,228,155,228,156,228,157,228,158,228,159,228,160,228,161,228,162,228,163,228,164,228,165,228,166,228,167,228,168,228,169,228,170,228,171,228,172,228,173,228,174,228,175,228,176,228,177,228,178,228,179,228,180,228,181,228,182,228,183,228,184,228,185,228,186,228,187,228,188,228,189,228,190,228,191,228,192,228,193,228,194,228,195,228,196,228,197,228,198,228,199,228,200,228,201,228,202,228,203,228,204,228,205,228,206,228,207,228,208,228,209,228,210,228,211,228,212,228,213,228,214,228,215,228,216,228,217,228,218,228,219,228,220,228,221,228,222,228,223,228,224,228,225,228,226,228,227,228,228,228,229,228,230,228,231,228,232,228,233,228,234,228,235,228,236,228,237,228,238,228,239,228,240,228,241,228,242,228,243,228,244,228,245,228,246,228,247,228,248,228,249,228,250,228,251,228,252,229,64,229,65,229,66,229,67,229,68,229,69,229,70,229,71,229,72,229,73,229,74,229,75,229,76,229,77,229,78,229,79,229,80,229,81,229,82,229,83,229,84,229,85,229,86,229,87,229,88,229,89,229,90,229,91,229,92,229,93,229,94,229,95,229,96,229,97,229,98,229,99,229,100,229,101,229,102,229,103,229,104,229,105,229,106,229,107,229,108,229,109,229,110,229,111,229,112,229,113,229,114,229,115,229,116,229,117,229,118,229,119,229,120,229,121,229,122,229,123,229,124,229,125,229,126,229,128,229,129,229,130,229,131,229,132,229,133,229,134,229,135,229,136,229,137,229,138,229,139,229,140,229,141,229,142,229,143,229,144,229,145,229,146,229,147,229,148,229,149,229,150,229,151,229,152,229,153,229,154,229,155,229,156,229,157,229,158,229,159,229,160,229,161,229,162,229,163,229,164,229,165,229,166,229,167,229,168,229,169,229,170,229,171,229,172,229,173,229,174,229,175,229,176,229,177,229,178,229,179,229,180,229,181,229,182,229,183,229,184,229,185,229,186,229,187,229,188,229,189,229,190,229,191,229,192,229,193,229,194,229,195,229,196,229,197,229,198,229,199,229,200,229,201,229,202,229,203,229,204,229,205,229,206,229,207,229,208,229,209,229,210,229,211,229,212,229,213,229,214,229,215,229,216,229,217,229,218,229,219,229,220,229,221,229,222,229,223,229,224,229,225,229,226,229,227,229,228,229,229,229,230,229,231,229,232,229,233,229,234,229,235,229,236,229,237,229,238,229,239,229,240,229,241,229,242,229,243,229,244,229,245,229,246,229,247,229,248,229,249,229,250,229,251,229,252,230,64,230,65,230,66,230,67,230,68,230,69,230,70,230,71,230,72,230,73,230,74,230,75,230,76,230,77,230,78,230,79,230,80,230,81,230,82,230,83,230,84,230,85,230,86,230,87,230,88,230,89,230,90,230,91,230,92,230,93,230,94,230,95,230,96,230,97,230,98,230,99,230,100,230,101,230,102,230,103,230,104,230,105,230,106,230,107,230,108,230,109,230,110,230,111,230,112,230,113,230,114,230,115,230,116,230,117,230,118,230,119,230,120,230,121,230,122,230,123,230,124,230,125,230,126,230,128,230,129,230,130,230,131,230,132,230,133,230,134,230,135,230,136,230,137,230,138,230,139,230,140,230,141,230,142,230,143,230,144,230,145,230,146,230,147,230,148,230,149,230,150,230,151,230,152,230,153,230,154,230,155,230,156,230,157,230,158,230,159,230,160,230,161,230,162,230,163,230,164,230,165,230,166,230,167,230,168,230,169,230,170,230,171,230,172,230,173,230,174,230,175,230,176,230,177,230,178,230,179,230,180,230,181,230,182,230,183,230,184,230,185,230,186,230,187,230,188,230,189,230,190,230,191,230,192,230,193,230,194,230,195,230,196,230,197,230,198,230,199,230,200,230,201,230,202,230,203,230,204,230,205,230,206,230,207,230,208,230,209,230,210,230,211,230,212,230,213,230,214,230,215,230,216,230,217,230,218,230,219,230,220,230,221,230,222,230,223,230,224,230,225,230,226,230,227,230,228,230,229,230,230,230,231,230,232,230,233,230,234,230,235,230,236,230,237,230,238,230,239,230,240,230,241,230,242,230,243,230,244,230,245,230,246,230,247,230,248,230,249,230,250,230,251,230,252,231,64,231,65,231,66,231,67,231,68,231,69,231,70,231,71,231,72,231,73,231,74,231,75,231,76,231,77,231,78,231,79,231,80,231,81,231,82,231,83,231,84,231,85,231,86,231,87,231,88,231,89,231,90,231,91,231,92,231,93,231,94,231,95,231,96,231,97,231,98,231,99,231,100,231,101,231,102,231,103,231,104,231,105,231,106,231,107,231,108,231,109,231,110,231,111,231,112,231,113,231,114,231,115,231,116,231,117,231,118,231,119,231,120,231,121,231,122,231,123,231,124,231,125,231,126,231,128,231,129,231,130,231,131,231,132,231,133,231,134,231,135,231,136,231,137,231,138,231,139,231,140,231,141,231,142,231,143,231,144,231,145,231,146,231,147,231,148,231,149,231,150,231,151,231,152,231,153,231,154,231,155,231,156,231,157,231,158,231,159,231,160,231,161,231,162,231,163,231,164,231,165,231,166,231,167,231,168,231,169,231,170,231,171,231,172,231,173,231,174,231,175,231,176,231,177,231,178,231,179,231,180,231,181,231,182,231,183,231,184,231,185,231,186,231,187,231,188,231,189,231,190,231,191,231,192,231,193,231,194,231,195,231,196,231,197,231,198,231,199,231,200,231,201,231,202,231,203,231,204,231,205,231,206,231,207,231,208,231,209,231,210,231,211,231,212,231,213,231,214,231,215,231,216,231,217,231,218,231,219,231,220,231,221,231,222,231,223,231,224,231,225,231,226,231,227,231,228,231,229,231,230,231,231,231,232,231,233,231,234,231,235,231,236,231,237,231,238,231,239,231,240,231,241,231,242,231,243,231,244,231,245,231,246,231,247,231,248,231,249,231,250,231,251,231,252,232,64,232,65,232,66,232,67,232,68,232,69,232,70,232,71,232,72,232,73,232,74,232,75,232,76,232,77,232,78,232,79,232,80,232,81,232,82,232,83,232,84,232,85,232,86,232,87,232,88,232,89,232,90,232,91,232,92,232,93,232,94,232,95,232,96,232,97,232,98,232,99,232,100,232,101,232,102,232,103,232,104,232,105,232,106,232,107,232,108,232,109,232,110,232,111,232,112,232,113,232,114,232,115,232,116,232,117,232,118,232,119,232,120,232,121,232,122,232,123,232,124,232,125,232,126,232,128,232,129,232,130,232,131,232,132,232,133,232,134,232,135,232,136,232,137,232,138,232,139,232,140,232,141,232,142,232,143,232,144,232,145,232,146,232,147,232,148,232,149,232,150,232,151,232,152,232,153,232,154,232,155,232,156,232,157,232,158,232,159,232,160,232,161,232,162,232,163,232,164,232,165,232,166,232,167,232,168,232,169,232,170,232,171,232,172,232,173,232,174,232,175,232,176,232,177,232,178,232,179,232,180,232,181,232,182,232,183,232,184,232,185,232,186,232,187,232,188,232,189,232,190,232,191,232,192,232,193,232,194,232,195,232,196,232,197,232,198,232,199,232,200,232,201,232,202,232,203,232,204,232,205,232,206,232,207,232,208,232,209,232,210,232,211,232,212,232,213,232,214,232,215,232,216,232,217,232,218,232,219,232,220,232,221,232,222,232,223,232,224,232,225,232,226,232,227,232,228,232,229,232,230,232,231,232,232,232,233,232,234,232,235,232,236,232,237,232,238,232,239,232,240,232,241,232,242,232,243,232,244,232,245,232,246,232,247,232,248,232,249,232,250,232,251,232,252,233,64,233,65,233,66,233,67,233,68,233,69,233,70,233,71,233,72,233,73,233,74,233,75,233,76,233,77,233,78,233,79,233,80,233,81,233,82,233,83,233,84,233,85,233,86,233,87,233,88,233,89,233,90,233,91,233,92,233,93,233,94,233,95,233,96,233,97,233,98,233,99,233,100,233,101,233,102,233,103,233,104,233,105,233,106,233,107,233,108,233,109,233,110,233,111,233,112,233,113,233,114,233,115,233,116,233,117,233,118,233,119,233,120,233,121,233,122,233,123,233,124,233,125,233,126,233,128,233,129,233,130,233,131,233,132,233,133,233,134,233,135,233,136,233,137,233,138,233,139,233,140,233,141,233,142,233,143,233,144,233,145,233,146,233,147,233,148,233,149,233,150,233,151,233,152,233,153,233,154,233,155,233,156,233,157,233,158,233,159,233,160,233,161,233,162,233,163,233,164,233,165,233,166,233,167,233,168,233,169,233,170,233,171,233,172,233,173,233,174,233,175,233,176,233,177,233,178,233,179,233,180,233,181,233,182,233,183,233,184,233,185,233,186,233,187,233,188,233,189,233,190,233,191,233,192,233,193,233,194,233,195,233,196,233,197,233,198,233,199,233,200,233,201,233,202,233,203,233,204,233,205,233,206,233,207,233,208,233,209,233,210,233,211,233,212,233,213,233,214,233,215,233,216,233,217,233,218,233,219,233,220,233,221,233,222,233,223,233,224,233,225,233,226,233,227,233,228,233,229,233,230,233,231,233,232,233,233,233,234,233,235,233,236,233,237,233,238,233,239,233,240,233,241,233,242,233,243,233,244,233,245,233,246,233,247,233,248,233,249,233,250,233,251,233,252,234,64,234,65,234,66,234,67,234,68,234,69,234,70,234,71,234,72,234,73,234,74,234,75,234,76,234,77,234,78,234,79,234,80,234,81,234,82,234,83,234,84,234,85,234,86,234,87,234,88,234,89,234,90,234,91,234,92,234,93,234,94,234,95,234,96,234,97,234,98,234,99,234,100,234,101,234,102,234,103,234,104,234,105,234,106,234,107,234,108,234,109,234,110,234,111,234,112,234,113,234,114,234,115,234,116,234,117,234,118,234,119,234,120,234,121,234,122,234,123,234,124,234,125,234,126,234,128,234,129,234,130,234,131,234,132,234,133,234,134,234,135,234,136,234,137,234,138,234,139,234,140,234,141,234,142,234,143,234,144,234,145,234,146,234,147,234,148,234,149,234,150,234,151,234,152,234,153,234,154,234,155,234,156,234,157,234,158,234,159,234,160,234,161,234,162,234,163,234,164,129,230]; 7 | var string = "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011\uFF0B\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\u21D2\u21D4\u2200\u2203\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\u25EF\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16\uFF17\uFF18\uFF19\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4\u30F5\u30F6\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2252\u2261\u222B\u221A\u22A5\u2220\u2235\u2229\u222A\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\u2235"; 8 | assert_equals(new TextDecoder("shift_jis").decode(new Uint8Array(bytes)), string, "decoded"); 9 | }, 10 | "shift_jis" 11 | ); 12 | -------------------------------------------------------------------------------- /test/test-utf.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | // Extension to testharness.js API which avoids logging enormous strings 5 | // on a coding failure. 6 | function assert_string_equals(actual, expected, description) { 7 | // short circuit success case 8 | if (actual === expected) { 9 | assert_true(true, description + ": === "); 10 | return; 11 | } 12 | 13 | // length check 14 | assert_equals(actual.length, expected.length, 15 | description + ": string lengths"); 16 | 17 | for (var i = 0; i < actual.length; i++) { 18 | var a = actual.charCodeAt(i); 19 | var b = expected.charCodeAt(i); 20 | if (a !== b) 21 | assert_true(false, 22 | description + 23 | ": code unit " + i.toString() + " unequal: " + 24 | cpname(a) + " != " + cpname(b)); // doesn't return 25 | } 26 | 27 | // It should be impossible to get here, because the initial 28 | // comparison failed, so either the length comparison or the 29 | // codeunit-by-codeunit comparison should also fail. 30 | assert_true(false, description + ": failed to detect string difference"); 31 | } 32 | 33 | // Inspired by: 34 | // http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html 35 | function encode_utf8(string) { 36 | var utf8 = unescape(encodeURIComponent(string)); 37 | var octets = new Uint8Array(utf8.length), i; 38 | for (i = 0; i < utf8.length; i += 1) { 39 | octets[i] = utf8.charCodeAt(i); 40 | } 41 | return octets; 42 | } 43 | 44 | function decode_utf8(octets) { 45 | var utf8 = String.fromCharCode.apply(null, octets); 46 | return decodeURIComponent(escape(utf8)); 47 | } 48 | 49 | // Helpers for test_utf_roundtrip. 50 | function cpname(n) { 51 | if (n+0 !== n) 52 | return n.toString(); 53 | var w = (n <= 0xFFFF) ? 4 : 6; 54 | return 'U+' + ('000000' + n.toString(16).toUpperCase()).slice(-w); 55 | } 56 | 57 | function genblock(from, len, skip) { 58 | var block = []; 59 | for (var i = 0; i < len; i += skip) { 60 | var cp = from + i; 61 | if (0xD800 <= cp && cp <= 0xDFFF) 62 | continue; 63 | if (cp < 0x10000) { 64 | block.push(String.fromCharCode(cp)); 65 | continue; 66 | } 67 | cp = cp - 0x10000; 68 | block.push(String.fromCharCode(0xD800 + (cp >> 10))); 69 | block.push(String.fromCharCode(0xDC00 + (cp & 0x3FF))); 70 | } 71 | return block.join(''); 72 | } 73 | 74 | function encode_utf16le(s) { return encode_utf16(s, true); } 75 | function encode_utf16be(s) { return encode_utf16(s, false); } 76 | function encode_utf16(s, le) { 77 | var a = new Uint8Array(s.length * 2), view = new DataView(a.buffer); 78 | s.split('').forEach(function(c, i) { 79 | view.setUint16(i * 2, c.charCodeAt(0), le); 80 | }); 81 | return a; 82 | } 83 | 84 | function test_utf_roundtrip () { 85 | var MIN_CODEPOINT = 0; 86 | var MAX_CODEPOINT = 0x10FFFF; 87 | var BLOCK_SIZE = 0x1000; 88 | var SKIP_SIZE = 31; 89 | 90 | var TD_U16LE = new TextDecoder("UTF-16LE"); 91 | var TD_U16BE = new TextDecoder("UTF-16BE"); 92 | 93 | var TE_U8 = new TextEncoder(); 94 | var TD_U8 = new TextDecoder("UTF-8"); 95 | 96 | for (var i = MIN_CODEPOINT; i < MAX_CODEPOINT; i += BLOCK_SIZE) { 97 | var block_tag = cpname(i) + " - " + cpname(i + BLOCK_SIZE - 1); 98 | var block = genblock(i, BLOCK_SIZE, SKIP_SIZE); 99 | 100 | // test UTF-16LE, UTF-16BE, and UTF-8 encodings against themselves 101 | var encoded = encode_utf16le(block); 102 | var decoded = TD_U16LE.decode(encoded); 103 | assert_string_equals(block, decoded, "UTF-16LE round trip " + block_tag); 104 | 105 | encoded = encode_utf16be(block); 106 | decoded = TD_U16BE.decode(encoded); 107 | assert_string_equals(block, decoded, "UTF-16BE round trip " + block_tag); 108 | 109 | encoded = TE_U8.encode(block); 110 | decoded = TD_U8.decode(encoded); 111 | assert_string_equals(block, decoded, "UTF-8 round trip " + block_tag); 112 | 113 | // test TextEncoder(UTF-8) against the older idiom 114 | var exp_encoded = encode_utf8(block); 115 | assert_array_equals(encoded, exp_encoded, 116 | "UTF-8 reference encoding " + block_tag); 117 | 118 | var exp_decoded = decode_utf8(exp_encoded); 119 | assert_string_equals(decoded, exp_decoded, 120 | "UTF-8 reference decoding " + block_tag); 121 | } 122 | } 123 | 124 | function test_utf_samples () { 125 | // z, cent, CJK water, G-Clef, Private-use character 126 | var sample = "z\xA2\u6C34\uD834\uDD1E\uDBFF\uDFFD"; 127 | var cases = [ 128 | { encoding: "utf-8", 129 | expected: [0x7A, 0xC2, 0xA2, 0xE6, 0xB0, 0xB4, 0xF0, 0x9D, 0x84, 0x9E, 0xF4, 0x8F, 0xBF, 0xBD] }, 130 | { encoding: "utf-16le", 131 | expected: [0x7A, 0x00, 0xA2, 0x00, 0x34, 0x6C, 0x34, 0xD8, 0x1E, 0xDD, 0xFF, 0xDB, 0xFD, 0xDF] }, 132 | { encoding: "utf-16", 133 | expected: [0x7A, 0x00, 0xA2, 0x00, 0x34, 0x6C, 0x34, 0xD8, 0x1E, 0xDD, 0xFF, 0xDB, 0xFD, 0xDF] }, 134 | { encoding: "utf-16be", 135 | expected: [0x00, 0x7A, 0x00, 0xA2, 0x6C, 0x34, 0xD8, 0x34, 0xDD, 0x1E, 0xDB, 0xFF, 0xDF, 0xFD] } 136 | ]; 137 | 138 | cases.forEach( 139 | function(t) { 140 | var decoded = new TextDecoder(t.encoding) 141 | .decode(new Uint8Array(t.expected)); 142 | assert_equals(decoded, sample, 143 | "expected equal decodings - " + t.encoding); 144 | }); 145 | } 146 | 147 | test(test_utf_samples, 148 | "UTF-8, UTF-16LE, UTF-16BE - Encode/Decode - reference sample"); 149 | 150 | test(test_utf_roundtrip, 151 | "UTF-8, UTF-16LE, UTF-16BE - Encode/Decode - full roundtrip and "+ 152 | "agreement with encode/decodeURIComponent"); 153 | -------------------------------------------------------------------------------- /test/test-x-user-defined.js: -------------------------------------------------------------------------------- 1 | // This is free and unencumbered software released into the public domain. 2 | // See LICENSE.md for more information. 3 | 4 | test( 5 | function() { 6 | assert_equals(new TextEncoder('x-user-defined').encoding, 'utf-8'); 7 | 8 | var decoder = new TextDecoder('x-user-defined'); 9 | for (var i = 0; i < 0x80; ++i) { 10 | assert_equals(decoder.decode(new Uint8Array([i])), String.fromCharCode(i)); 11 | assert_equals(decoder.decode(new Uint8Array([i + 0x80])), String.fromCharCode(i + 0xF780)); 12 | } 13 | }, 14 | "x-user-defined encoding" 15 | ); 16 | -------------------------------------------------------------------------------- /test/tests.html: -------------------------------------------------------------------------------- 1 | 2 | Encoding API Tests 3 | 4 |

Encoding API Tests

5 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /util/externs.js: -------------------------------------------------------------------------------- 1 | // 2 | // Externs for Closure Compiler 3 | // https://developers.google.com/closure/compiler/ 4 | // 5 | // Usage: 6 | // java -jar compiler.jar \ 7 | // --jscomp_warning reportUnknownTypes \ 8 | // --warning_level VERBOSE \ 9 | // --summary_detail_level 3 \ 10 | // --externs util/externs.js \ 11 | // lib/encoding.js 12 | // 13 | 14 | /** 15 | * @param {string} name 16 | * @return {*} 17 | */ 18 | function require(name) {} 19 | 20 | /** 21 | * @type {Object} 22 | */ 23 | var module; 24 | 25 | /** 26 | * @type {Object.} 27 | */ 28 | module.exports; 29 | --------------------------------------------------------------------------------